i saw some similar questions on the site but none of them really helped me.
I have a function that draws a few lines on the form when a button is clicked that vary in shape depending on the values the user enters in some textboxes.
My problem is that when i minimize the form, the lines disappear and i understood that this can be resolved by using the OnPaint event, but i don't really understand how.
Can anyone give me a simple example of using a function to draw something at the push of a button using the OnPaint event?
Here you go, simpe MSDN tutorial on User-Drawn Controls
You must inherit Button
class and override OnPaint method.
Code example:
protected override void OnPaint(PaintEventArgs pe)
{
// Call the OnPaint method of the base class.
base.OnPaint(pe);
// Declare and instantiate a new pen.
System.Drawing.Pen myPen = new System.Drawing.Pen(Color.Aqua);
// Draw an aqua rectangle in the rectangle represented by the control.
pe.Graphics.DrawRectangle(myPen, new Rectangle(this.Location,
this.Size));
}
EDIT:
Add property to your class and like public Color MyFancyTextColor {get;set;}
and use it in your OnPaint
method. Alsow it will apear in control property editor of visual studio form designer.
You can write all the code responsible for (re)drawing the scene into method called when Paint
event occurs.
So, you can register you method to be called when Paint occurs like this:
this.Paint += new PaintEventHandler(YourMethod);
Then YourMethod will be called whenever the form needs to be redrawn.
Also remember that you method must have the same arguments as delegate, in this case:
void YourMethod(object sender, PaintEventArgs pea)
{
// Draw nice Sun and detailed grass
pea.Graphics.DrawLine(/* here you go */);
}
Or, as mentioned in another answer, you can override OnPaint
method. Then you don't have to take care about adding event handler with your own method.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With