繁体   English   中英

C#中的OnPaint事件如何使用?

[英]How to use the OnPaint event in C#?

我在网站上看到了一些类似的问题,但没有一个真正帮助我。

我有一个 function,当单击按钮时,它会在表单上绘制几行,形状会根据用户在某些文本框中输入的值而有所不同。

我的问题是,当我最小化表单时,线条消失了,我知道这可以通过使用 OnPaint 事件来解决,但我真的不明白如何。

谁能给我一个简单的例子,使用 function 在使用 OnPaint 事件按下按钮时绘制一些东西?

在这里你 go ,关于用户绘制的控件的 MSDN 教程

您必须继承Button class 并重写 OnPaint 方法。

代码示例:

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));
}

编辑:

将属性添加到您的 class 并喜欢public Color MyFancyTextColor {get;set;}并在您的OnPaint方法中使用它。 此外,它还会出现在 visual studio 窗体设计器的控件属性编辑器中。

您可以将负责(重新)绘制场景的所有代码编写到Paint事件发生时调用的方法中。

因此,您可以注册在 Paint 发生时调用的方法,如下所示:

this.Paint += new PaintEventHandler(YourMethod);

然后,只要需要重绘表单,就会调用 YourMethod。

还要记住,您的方法必须具有与委托相同的 arguments,在这种情况下:

void YourMethod(object sender, PaintEventArgs pea)
{
   // Draw nice Sun and detailed grass
   pea.Graphics.DrawLine(/* here you go */);
}

编辑

或者,如另一个答案中所述,您可以覆盖OnPaint方法。 然后你就不必关心用你自己的方法添加事件处理程序了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM