PDA

View Full Version : ایجاد یک شی bitmap و گذاشتن محتوبات درون شی bitmap دیگر بدون تغییر شی اولیه ؟



sha8046
شنبه 16 اردیبهشت 1391, 17:07 عصر
من 2 شی bitmap دارم ولی قراره محتویات یکی در دیگری کپی شود و تغییر داده شود ولی متاسفانه با تغییر شی کپی هر دوی اینها تغییر میکنند یعنی اصلی رو هم تغییر میده . چرا ؟ آیا دستور انتساب بصورت bitmap1 = bitmap 2 ; باعث این اشتباه میشه پس چکار باید کرد ؟

hakim22
شنبه 16 اردیبهشت 1391, 17:32 عصر
دستور انتساب یک شی باعث میشه شی bitmap1 اشاره کنه به شی اون سمت علامت تساوی. کلا در برنامه نویسی شی گرا همه ی شی ها بعد از انتساب به هم به یک بخش از حافظه اشاره می کنند و با تغییر در اون بخش از حافظه همه تغییر می کنند.

با شی bitmap کار نکردم ولی یا با گزینه ی clone یا equal یا استفاده از گزینه ی new می توانید مشکل خودتون رو حل کنید.

esiprogrammer
شنبه 16 اردیبهشت 1391, 17: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);