PDA

View Full Version : چرا موقع Minimize کردن هرچی کشیدم پاک میشه ؟



hamed jalili
شنبه 16 اردیبهشت 1385, 01:07 صبح
سلام
من یه تعداد شکل رو روی Form م میکشم ولی بعد از اینکه Form رو Minimize میکنم یا یه منوی دیگه یا برنامه دیگه مثل JetAudio رو روی اون میکشم چیز هایی که کشیده بودم پاک میشن
چه طوری این مشکل رو حل کنم ؟

dot_net_lover2
دوشنبه 18 اردیبهشت 1385, 00:32 صبح
قبلا با GDI در VB همین مشکل را داشتم ولی autoredraw مربوط به فرم را که true میکردم درست میشد در net. هنوز تست نکردم.

hamed jalili
دوشنبه 18 اردیبهشت 1385, 00:51 صبح
کسی نمی دونه این مشکل رو چه طوری حل کنم ؟

mamadgmail
دوشنبه 18 اردیبهشت 1385, 08:48 صبح
می تونی هر چی که می خوای بکشی در رویداد on paint بذاری در این صورت هر اتفاقی بیفته شکلت دوبازه کشیده می شه. البته فکر نمی کنم این راه حل درستی باشه.حتما راه حل های بهتری هم هست.

sajjad2678
پنج شنبه 21 اردیبهشت 1385, 18:55 عصر
زمانی اتفاق میافتد که یک فعل وانفعال روی فرم انجام شود Onpaint رویداد
مانند مواردی که شما ذکر کردید
در این رویداد فرم وتمام کنترلهای آن باید خود را دوباره رسم کنند
در نتیجه آنچه که شما رسم میکنید باید در این رویداد باشد در
غیر اینصورت در اولین باری که این رویداد اتفاق افتاد حتما شکل شما از دست میرود

sianooshonline
جمعه 22 اردیبهشت 1385, 00:16 صبح
توی Event مینیمایزت یک Repaint بگذار
شاید جواب ده
موفق باشید

joker
جمعه 22 اردیبهشت 1385, 12:03 عصر
توی ویژوال سی یه مبحثب بود به اسم سریالایز کردن ... شاید اینجا بدردت بخوره.
خیلی وقته سی کار نمیکنم چیزی یادم نمونه ولی دوستان میتونن کمکت کنن.

hamed jalili
یک شنبه 24 اردیبهشت 1385, 01:02 صبح
توی Event مینیمایزت یک Repaint بگذار
شاید جواب ده
موفق باشید
من حرفه ای نیستم میشه مبتدی تر توضیح بدین !!
Repaint چیه ؟

Behrooz_CS
یک شنبه 24 اردیبهشت 1385, 20:04 عصر
گل پسر

کدهایی که برای ترسیم شکلهایت نوشتی را در رویداد
OnPaint
بنویس مطمئن باش درست می شه
:لبخند:

mamadgmail
دوشنبه 25 اردیبهشت 1385, 00:29 صبح
آقا من یک قبلا بهتون گفتم از onpaint استفاده کنید مشکل حل می شه!!!

daneshjo
دوشنبه 25 اردیبهشت 1385, 01:59 صبح
یکی از روشهایی که می تونی استفاده کنی استفاده از یک شی ایمیج است .
شما می توانید تمام چیزهایی که می خواهی بکشی رو تو ایمیج بکشی در این صورت با تغییر فرم اونو از دست نمی دی.

hamed jalili
دوشنبه 25 اردیبهشت 1385, 01:59 صبح
Onpaint جواب نداد
قبلا امتحان کرده بودم !!

Amir Oveisi
دوشنبه 25 اردیبهشت 1385, 10:15 صبح
منم این مشکل رو دارم اگه فهمیدین از کجاس به منم بگین لطفا

Behrooz_CS
دوشنبه 25 اردیبهشت 1385, 11:39 صبح
می توانی پس از کشیدن بر یک پنل با استفاده از تابع
DrawtoBitmap
آنرا در یک عکس بنویسی و به عنوان عکس پس زمینه در فرمت قرار بدی

Amir Oveisi
دوشنبه 25 اردیبهشت 1385, 12:48 عصر
روش بهتری نداره یعنی؟؟؟

MH2538
دوشنبه 25 اردیبهشت 1385, 13:21 عصر
سلام
من یه زمانی یه برنامه گرافیکی برای شبیه سازی گیت های منطقی تو VC++ نوشته بودم همین مشکل رو داشت اما از راه (های) زیر مشکل رو حل کردم:
1- در روش اول که ناشیانه بود تمام ترسیمات گرافیکی صفحه رو در یک آرایه نگهداری می کردم و هر زمان رویداد OnPaint اتقاق می افتاد در OnPaint تابعی رو صدا می زدم و در این تابع تمامی محتویات آرایه ام رو از نو رو صفحه ترسیم می کردم .
2- در روش دوم که خیلی مفید تر بود تمام فعالیت های گرافیکی کاربر رو Serialize می کردم و باز هم در رویداد OnPaint از اون برای ترسیم مجدد استفاده می کردم .

hamed jalili
سه شنبه 26 اردیبهشت 1385, 00:41 صبح
2- در روش دوم که خیلی مفید تر بود تمام فعالیت های گرافیکی کاربر رو Serialize می کردم و باز هم در رویداد OnPaint از اون برای ترسیم مجدد استفاده می کردم .
میشه بیشتر توضیح بدین ؟


.

dot_net_lover2
سه شنبه 26 اردیبهشت 1385, 12:45 عصر
قبلا با GDI در VB همین مشکل را داشتم ولی autoredraw مربوط به فرم را که true میکردم درست میشد در net. هنوز تست نکردم.

تستش کردم ٬ رویداد Paint در +GDI دقیقا مثل خصوصیت autoredraw در GDI کار میکنه با این تفاوت که در اونجا فقط این خصوصیت را True میکردیم ولی در اینجا کد مربوطه را در این رویداد مینویسیم.



using System.Drawing.Drawing2D;


private void Form1_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
{
Graphics myGraphic = this.CreateGraphics();
Pen myPen = new Pen(Color.Red,2);
myGraphic.DrawLine(myPen,0,0,this.Width,this.Heigh t);
}

Amir Oveisi
سه شنبه 26 اردیبهشت 1385, 16:27 عصر
man roo evente Paint emtehan kardam dorost kar mikone hich moshkeliam nadashte ta hala!!

روانشناس
پنج شنبه 04 خرداد 1385, 20:40 عصر
متاسفانه برای من رویداد OnPaint درست کار نمی کنه. راه دیگه ای سراغ ندارید؟

Amir Oveisi
پنج شنبه 04 خرداد 1385, 20:53 عصر
ببینید رویداد onpaint زمانی اتفاق میفته که تابع
this.Refresh() رو فراخونی کنید
و برای رسم هم از e.Graphics استفاده میکنی نه از CreateGraphis
امیدوارم حل بشه با اینا

hardchice
جمعه 05 خرداد 1385, 19:50 عصر
اولا که علاوه بر Paint Eventدر Event های Validated ,Activatedهم کد خودت رو بنویس
نکته: بعد از اینکه روی فرم خودت چیزی کشیدی در این توابع از تابع Update برای فرم استفاده کن

فکر کنم مشکلت حل بشه ،اگه نشد بگو