我试图想出一种在 C# 的 Windows 窗体中制作非矩形按钮的方法。我已经四处寻找这个,并且有很多关于如何使按钮外观非矩形的教程(包括微软自己的文档),但是 - 这很关键 - 他们都没有做任何关于制作活动区域的事情按钮的非矩形。例如,如果您制作一个椭圆形按钮,则边界矩形的角仍然是用来拾取鼠标事件(例如鼠标悬停和单击)的部分。这对我的需要是不可接受的。我需要有几个彼此相邻的奇怪形状的按钮,它们的边界矩形可能会重叠,但它们应该只响应按钮图形可见部分内的点击。对于其他语言(主要是 Objective-C),我已经看到了几个类似的问题,但对于 C# 则没有。Winforms甚至可以做到这一点吗?
问问题
1476 次
1 回答
6
Win32 窗口总是矩形的。但是,如果您使用SetWindowRgn
. 还有“分层窗口”API。
但是,您可能无法从纯 WinForms 执行此操作。期望到达 p/invoke。
看起来你可以从纯 WinForms 中做到这一点:只需设置Control.Region
属性。
MSDN上提供了更完整的示例
于 2013-04-15T00:01:48.247 回答