C#非矩形按钮

Dar*_*man 1 c# winapi button winforms

我试图想出一种在C#中的Windows窗体中制作非矩形按钮的方法.我一直在寻找这个,并且有很多教程(包括微软自己的文档)关于如何使按钮外观非矩形,但是 - 这很关键 - 它们都没有做任何关于制作按钮的活动区域的事情非矩形.例如,如果您创建一个椭圆形按钮,则边界矩形的角仍然是用于拾取鼠标事件(如翻转和点击)的内容.这对我的需求是不可接受的.我需要在彼此相邻的地方放置几个奇形状的按钮,它们的边界可能会重叠,但它们只应对按钮图形可见部分内的点击做出响应.我已经看到了其他几种语言(主要是Objective-C)的几个问题,但C#没有.Winforms甚至可以实现这一点吗?

Ben*_*igt 6

Win32窗口始终是矩形的.但是,如果使用,在窗口中有"洞"是完全可能的SetWindowRgn.还有"分层窗口"API.

但是,您可能无法从纯WinForms执行此操作.期望达到p/invoke.


看起来你可以用纯WinForms来做:只需设置Control.Region属性即可.

MSDN上提供一个更完整的示例