سلام
آخه جوان رشید، دو خط کد که کامنت نداره !.... .gif)
کد:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
یک کلاسس با قابلیت سریالی تعریف کردیم که دو مقدار را نگه داری میکند
اولی به نام Rtf یک String است که برای نگه داری متن فرمت دار و مخصوص RichTextBox استفاده میشود.
دومی با نام Img یک Image یا Bitmap (عکس) است که کلیه نقاشی ها و خطوط ترسیمی شما را در خود دارد.
دو متد هم داری.
اولی با نام Save وظیفه سریالی کردن کلاسس عزیزمان را بر عهده دارد!
شی BinaryFormatter را میسازد،
فایل مورد نظر را برای نوشتن باز میکند،
کلاسس جاری که کد در آن اجرا میشود (Me) به همراه stream فایل باز شده تحویل BinaryFormatter میدهد تا کلاس را سریالی کند و در فایل ذخیره کند.
دومی با نام Load است و وظیفه ضد سریالی کلاسس را بر عهده دارد.
شی BinaryFormatter را میسازد،
فایل مورد نظر را برای خواندن باز میکند،
stream فایل باز شده را تحویل BinaryFormatter تا اطلاعات را خوانده و مقدار جدید از کلاسس Data را پس دهد
در نهایت چون خروجی BinaryFormatter از نوع Object است (و مطمئن هستیم که داخلش کلاسس Data خودمان قرار دارد) با دستور TryCast اشره گر Object را به Data قالب ریزی میکنیم.
کد:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
در کدهای برنامه برای ذخیره...
با کمک New نمونه جدیدی از کلاسس Data میسازیم و محتویات RichTextBox و تصویر نقاشی شده را در ان میریزیم و متد Save را اجرا میکنیم.
(معمولاً این کلاسس در یک برنامه از قبل وجود دارد و دیتا هم در ان قرار دارد)
برای open هم...
دستور Load را اجرا میکنیم و نسخه جدید و کاملی از Data را پس میگیریم
این بار به صورت عکس محتویات Data را به RichTextBox و تصویرمان باز میگردانیم.
اگر کدخاصی را متوجه نشدید، بگویید تا همان را بیشتر توضیح دهم.
=====
فقط بدیهی است که ترسیمات شما نباید یک راست در روی پرده نمایش مونیتور انجام شود و باید آنها را در bmp داخل ram تان ترسیم کنید و بعد bmp را روی مونیتور ترسیم کنید، اینطوری بعداً با save و load تصویر هم مشکلی نخواهید داشت.
البته در کل ترسیم تصویر روی RichTextBox یکم عجیب و غریب است!! و اگر RichTextBox کوچک باشد و نیاز به Scroll پیدا کنید...