[英]C# Winforms How to draw a rectangle on a button on a mouse over?
在我们的应用程序中,我们在白色窗体上具有白色按钮。 当鼠标悬停在按钮上时,我们希望在按钮上方显示一个淡蓝色的透明矩形。
我想创建此用户控件,但是我不知道该怎么做。 我已经尝试过Google,但是我没有找到任何可以帮助我的东西,因此希望你们能为我指明正确的方向。
您可以仅从Button
派生您自己的WinForms控件,并覆盖OnPaint
事件。 在事件处理程序中,您将具有一个PaintEventArg
参数,该参数包含名为Graphics
的属性。 您可以使用此属性在要控制的位置直接绘制任何想要的东西。
这是直接来自MSDN的示例: http : //msdn.microsoft.com/zh-cn/library/system.windows.forms.control.onpaint.aspx
补充:重新阅读您的问题,发现我没有正确回答。
基本上,您必须重写两个事件并添加一个属性,该属性显示控件是否应该使用覆盖矩形绘制,例如IsDrawRectangle
。 触发OnMouseEnter
事件后,立即检查是否设置了IsDrawRectangle,如果未设置,则将其设置为true并调用this.Invalidate()
。 Invalidate()
方法将强制重新绘制控件,然后在OnPaint
事件中再次检查IsDrawRectangle
属性的值,并在需要时绘制矩形。 您还必须重写OnMouseLeave
以将属性设置为false,并强制重新绘制以删除矩形。
补充:如果您需要重绘的不仅仅是一个控件(以防您的矩形覆盖了其他需要重绘的控件),则将要重绘的所有内容都放在一个容器中,并调用Parent.Invalidate()
事件处理程序中的Parent.Invalidate()
方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.