C#Winforms如何在鼠标上的按钮上绘制矩形?

Mar*_*ijn 0 c# paint button winforms

在我们的应用程序中,我们在白色表单上有白色按钮.当鼠标悬停按钮时,我们希望在按钮上显示浅蓝色透明矩形.

我想创建这个用户控件,但我不知道如何做到这一点.我试过谷歌,但我没有找到任何可以帮助我的东西,所以我希望你们能指出我正确的方向.

Ale*_*kin 6

您可以从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()方法在你的事件处理程序中.