View Full Version : ایجاد یک شی bitmap و گذاشتن محتوبات درون شی bitmap دیگر بدون تغییر شی اولیه ؟
sha8046
شنبه 16 اردیبهشت 1391, 18:07 عصر
من 2 شی bitmap دارم ولی قراره محتویات یکی در دیگری کپی شود و تغییر داده شود ولی متاسفانه با تغییر شی کپی هر دوی اینها تغییر میکنند یعنی اصلی رو هم تغییر میده . چرا ؟ آیا دستور انتساب بصورت bitmap1 = bitmap 2 ; باعث این اشتباه میشه پس چکار باید کرد ؟
hakim22
شنبه 16 اردیبهشت 1391, 18:32 عصر
دستور انتساب یک شی باعث میشه شی bitmap1 اشاره کنه به شی اون سمت علامت تساوی. کلا در برنامه نویسی شی گرا همه ی شی ها بعد از انتساب به هم به یک بخش از حافظه اشاره می کنند و با تغییر در اون بخش از حافظه همه تغییر می کنند.
با شی bitmap کار نکردم ولی یا با گزینه ی clone یا equal یا استفاده از گزینه ی new می توانید مشکل خودتون رو حل کنید.
esiprogrammer
شنبه 16 اردیبهشت 1391, 18:36 عصر
در سی شارپ انتساب دو آبجکت باعث میشه ابجکت اولی به دومی رفرنس بشه.
یعنی هردوتا به یک مکان از حافظه اشاره میکنند و هر تغییری در آبجکت اولی موجب تغییر در آبجکت دومی میشه.
برای رفع مشکلتون حتما باید آبجکت جدیدی بسازید یعنی new کنید. و مقادیر اولی رو در دومی کپی کنید.
از متد Clone هم برای کپی کردن میتونی استفاده کنی
Bitmap myBitmap = new Bitmap("filename");
RectangleF cloneRect = new RectangleF(0, 0, 100, 100);
PixelFormat format = myBitmap.PixelFormat;
Bitmap cloneBitmap = myBitmap.Clone(cloneRect, format);
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.