PDA

View Full Version : مشکل با کلاس graphics و رنگ آمیزی فرم



ahmad_ferdinand
شنبه 07 مرداد 1391, 12:48 عصر
با سلام خدمت دوستان
من برای رنگ آمیزی فرمم از قطعه کد زیر استفاده میکنم که باعث میشه رنگ فرم به صورت grediant در بیاد یعنی دو رنگ بشه , از یک سمت رنگ پر باشه و تا طرف دیگه به سمت سفیدی بره , مشکل اینجاست که بعد هفت یا 8 بار فراخوانی (بسته به حافظه سیستم) اکسپشن GDI+ رو میده که پیغامش بعضی موقع ها out of memory exception و بعضی موقع ها هم interopService exception هستش اکسپشن اول رو یه جوری حل کردم گرچه بازم شاید بده اما دومی بعد از چندین بار فراخوانی فرم و مسیج باکسم که اونم از این کد استفاده میکنه بوجود میاد البته بسته به حافظه داره تو ویندوز ایکس پی زودتر میده تو سون دیرتر , کد من به شکل زیر هستش :

GC.Collect();
GC.WaitForPendingFinalizers();
GC.Collect();
Graphics g = e.Graphics;
Rectangle frmTitleR = new Rectangle(0, 0, this.Width, this.Height);
LinearGradientBrush frmLGBR = new LinearGradientBrush(frmTitleR, Color.FromArgb(209, 230, 243), Color.FromArgb(106, 163, 174), LinearGradientMode.Horizontal);
g.FillRectangle(frmLGBR, frmTitleR);
g.Dispose();
frmLGBR.Dispose();

همینطور که میبینین اولش جی سی رو صدا میزنم تا حافظه رو از منابع بی مصرف پاک کنه و در آخر هم شی گرافیک و شی کلاس LinearGradientBrush v رو آزاد میکنم که بازم همین مشکل وجود داره
کسی میدونه مشکل از چیه ؟ ممنون