PDA

View Full Version : سوال: مشکل در استفاده از توابع گرافیک



Nima_kyan
دوشنبه 21 اسفند 1391, 13:03 عصر
سلام
من تو فرمم یه تایمر دارم که با فعال شدنش تمام اشیای فرمم ساخته میشه.(به جز چند shape اش که ساخته نمیشن)
این یه نمونه کد رسم اشکالمه(چند تا شکل خیلی ساده میخوام).


Graphics gs;
gs = P.CreateGraphics();
gs.FillRectangle(Brushes.Red,30, 25, 10, 10);

خطا نمیده ولی هیچی هم رسم نمیکنه.
ولی همین کد رو وقتی تو رویداد کلیک یه دکمه میزارم مشکلی نداره و رسم میکنه.
نمیدونم مشکل کار کجاست!!!!

erfan_urchin
دوشنبه 21 اسفند 1391, 14:09 عصر
سلام
من تو فرمم یه تایمر دارم که با فعال شدنش تمام اشیای فرمم ساخته میشه.(به جز چند shape اش که ساخته نمیشن)
این یه نمونه کد رسم اشکالمه(چند تا شکل خیلی ساده میخوام).


Graphics gs;
gs = P.CreateGraphics();
gs.FillRectangle(Brushes.Red,30, 25, 10, 10);

خطا نمیده ولی هیچی هم رسم نمیکنه.
ولی همین کد رو وقتی تو رویداد کلیک یه دکمه میزارم مشکلی نداره و رسم میکنه.
نمیدونم مشکل کار کجاست!!!!
دوست عزیز مشکلتون تو خط آخر هستش. شما نباید اونجا رنگ brush رو بدین باید قبلش ازش شی بسازین. یعنی اینجوری
private void button1_Click(object sender, EventArgs e)
{
Graphics g = this.CreateGraphics();
Brush b = new SolidBrush(Color.Red);
g.FillRectangle(b, 30, 25, 80, 90);
}

Nima_kyan
دوشنبه 21 اسفند 1391, 14:45 عصر
دوست عزیز مشکلتون تو خط آخر هستش. شما نباید اونجا رنگ brush رو بدین باید قبلش ازش شی بسازین. یعنی اینجوری
private void button1_Click(object sender, EventArgs e)
{
Graphics g = this.CreateGraphics();
Brush b = new SolidBrush(Color.Red);
g.FillRectangle(b, 30, 25, 80, 90);
}

مرسی بابت توجهتون ولی مشکل از اون نیست. همون کد رو هم اگه امتحان کنید درسته و جواب میده. مشکل اینه که اینرو میخوام تو یه تایمر که فقط یه بارم اجرا میشه اجراش کنم،که نمیشه متاسفانه.

erfan_urchin
دوشنبه 21 اسفند 1391, 14:56 عصر
دوست عزیز من کد خودتون رو تو تایمر امتحان کردم جواب میده. فقط به جای P.CreateGraphics(); نوشتم this.CreateGraphics();
Graphics gs;
private void button1_Click(object sender, EventArgs e)
{
timer1.Enabled = true;
timer1.Interval = 1000;
}

private void timer1_Tick(object sender, EventArgs e)
{
gs = this.CreateGraphics();
gs.FillRectangle(Brushes.Red, 30, 25, 90, 80);
}