PDA

View Full Version : [ override کردن OnPaint + رویداد Paint فرم ] و زمان اجرای این دو



HosseinProgrammer
چهارشنبه 14 فروردین 1387, 18:54 عصر
سلام.
سوال اول:
می خواستم بدونم که OnPaint وقتی Override می شود، دقیقا چه زمانی اجرا می شود؟ به عبارت ساده تر کد زیر در برنامه کی اجرا می شود؟



protectedoverridevoid OnPaint(
PaintEventArgs paintEvent )
{
// get graphics object
Graphics g = paintEvent.Graphics;
SolidBrush brush = newSolidBrush( Color.Blue );
Pen pen = newPen( Color.AliceBlue );
// create filled rectangle
g.FillRectangle( brush, 90, 30, 150, 90 );
// draw lines to connect rectangles
g.DrawLine( pen, 90, 30, 110, 40 );
g.DrawLine( pen, 90, 120, 110, 130 );
g.DrawLine( pen, 240, 30, 260, 40 );
g.DrawLine( pen, 240, 120, 260, 130 );
// draw top rectangle
g.DrawRectangle( pen, 110, 40, 150, 90 );
// set brush to red
brush.Color = Color.Red;
// draw base Ellipse
g.FillEllipse( brush, 280, 75, 100, 50 );
// draw connecting lines
g.DrawLine( pen, 380, 55, 380, 100 );
g.DrawLine( pen, 280, 55, 280, 100 );
// draw Ellipse outline
g.DrawEllipse( pen, 280, 30, 100, 50 );
} // end method OnPaint


---------------------------------------------------------------------------

سوال دوم:
چه زمانی رویداد Paint فرم اجرا می شود؟ یعنی باید چه اتفاقی بیفتد؟

پیشاپیش از پاسختون سپاسگزارم.

hdv212
چهارشنبه 14 فروردین 1387, 19:41 عصر
هر زمانی که فرم نیاز به رسم مجدد داشته باشه، تابع OnPaint هم اجرا میشه، مثل زمانی که فرم نشون داده میشه، زمانی که فرم رو حرکت میدی، زمانی که پنجره ای رو روی فرم میکشی و ...