您可以从a派生自己的WinForms控件Button并覆盖该OnPaint事件.在事件处理程序中,您将拥有一个PaintEventArg包含所调用属性的参数Graphics.您可以使用此属性直接在控件所在位置绘制任何内容.
以下是MSDN的一个示例:http://msdn.microsoft.com/en-us/library/system.windows.forms.control.onpaint.aspx
补充:只需重新阅读您的问题,发现我没有正确回复.
基本上,你必须覆盖两个事件并添加一个属性,显示你的控件是否应该用覆盖的矩形绘制,让我们说IsDrawRectangle.一旦OnMouseEnter触发事件,您将检查IsDrawRectangle是否已设置,如果未设置,则将其设置为true并调用this.Invalidate().该Invalidate()方法将强制重新绘制控件,然后在您的OnPaint事件中再次检查IsDrawRectangle属性的值并在需要时绘制矩形.您还必须覆盖OnMouseLeave以将属性设置回false并强制重绘以删除矩形.
补充:如果你需要重新绘制的不仅仅是一个控件(如果你的矩形覆盖了一些其他需要重新绘制的控件),那么将你想要重新绘制的所有内容放在一个容器中并调用Parent.Invalidate()方法在你的事件处理程序中.
| 归档时间: |
|
| 查看次数: |
3508 次 |
| 最近记录: |