PDA

View Full Version : سوال: پاک کردن شکل



asemaneiran
دوشنبه 11 بهمن 1395, 22:01 عصر
سلام
من با این کد یک بیضی روی فرم میکشم

SolidBrush mySolidBrush = new SolidBrush(Color.Red);
myGraphics.DrawEllipse(myPen, 50, 50, 150, 150);
چکار کنم وقتی یه باتن رو زدم بیضی رسم شده روی فرم پاک بشه ؟؟؟

ژیار رحیمی
سه شنبه 12 بهمن 1395, 02:31 صبح
myGraphics.Clear(Color.White);

asemaneiran
چهارشنبه 13 بهمن 1395, 09:51 صبح
سلام
ممنون
من دایره رو در یک باتن می کشم
و میخوام با یه باتن دیگه پاک بشه
در باتن دوم که باید پاک بشه myGraphics رو نمیشناسه چکار کنم؟

mr.sirwan
چهارشنبه 13 بهمن 1395, 22:28 عصر
آبجکت mygraphic رو سراسری تعریف کن و بعد از هر استفاده اون رو حتما Dispose کن وگرنه به تدریج رَم رو پر میکنه

asemaneiran
چهارشنبه 13 بهمن 1395, 23:15 عصر
سلام
ممنون
تو رو خدا بگید چطوری؟
سراسری نوشتم
Public myGraphics
نشد
خواهش می کنم بگید
مرسی

Mahmoud.Afrad
چهارشنبه 13 بهمن 1395, 23:22 عصر
یک متغیر bool در سطح کلاس تعریف کنید. در جایی که نیاز به رسم هست این متغیر رو true کنید و در جایی که نیاز نیست false کنید. بعد از تغییر مقدار این متغیر متد Invalidate از دکمه اول رو صدا بزنید. در متد Paint از دکمه اول چک کنید اگر متغیر true بود رسم انجام بشه.


میتونید یک لیست از اشکالی که بایست رسم بشن ایجاد کنید و اون لیست رو رسم کنید که میتونید از نمونه برنامه هایی که شبیه paint مایکروسافت نوشته شده اند استفاده کنید.

asemaneiran
چهارشنبه 13 بهمن 1395, 23:40 عصر
متوجه نشدم چکار کنم؟
من تازه با رسم شکل دارم کار میکنم
خواهش میکنم که بدید

asemaneiran
پنج شنبه 14 بهمن 1395, 20:38 عصر
سلام
متوجه شدم
اما من توی کلیک یه باتن یک سری کد اجرا می کنم و بعد شکل رو میکشم چند تا خط و دایره
بعد میخوام با زدن یه باتن دیگه کل شکلها پاک شه
اینو نمیدونم چطوری بنویسم که توی باتن پاک کردن بشناسه؟

asemaneiran
جمعه 15 بهمن 1395, 08:32 صبح
چرا کسی جواب نمیده؟؟؟
چکار کنم
نمیشه سراسری تعریفش کنم؟

mr.sirwan
جمعه 15 بهمن 1395, 11:44 صبح
دوست عزیز گفتم که ابجکت رو بصورت سراسری، هم سطح متدهای کلاس تعریف کنید

Mahmoud.Afrad
شنبه 16 بهمن 1395, 13:00 عصر
مثال از چیزی که قبلا گفتم:
یک متغیر bool در سطح کلاس تعریف کنید. در جایی که عمل رسم اعمال میشه (باتن2) برای اجرای عمل رسم متغیر رو true و با متد Invalidate رسم مجدد رو فراخوانی کنید و در جایی که باید پاک بشه هم همینطور با مقدار false و رسم مجدد. در این مثال رسم در باتن1 انجام میشه به شرطی که متغیر true باشه.
private bool _draw;

private void button2_Click(object sender, EventArgs e)
{
_draw = true;
button1.Invalidate();
}

private void button3_Click(object sender, EventArgs e)
{

_draw = false;
button1.Invalidate();
}

private void button1_Paint(object sender, PaintEventArgs e)
{
if (_draw)
{
// رسم ...
e.Graphics.Clear(Color.AntiqueWhite);
}
}