C# Winforms不规则窗口

4
我该如何使用WinForms和C#创建具有不规则形状的窗口?

你对“不规则”的定义是什么? - rahul
我猜这个问题是指没有常规的 WinForm 界面,比如标题栏、边框等? - Svish
不要像我们看到的一些 Windows Media Player 皮肤那样不规则,明白了吗?不是矩形或圆角边缘。 - Moon
这个应该被关闭,因为像Nifle所指出的那样是一个重复的问题。 - yeyeyerman
1个回答

6
有几种不同的方法可以实现这个。一种方法是使用 TransparencyKey(如 Nifle 指出的帖子中所示)。另一种方法是将 Region 对象分配给窗体的 Region 属性:
System.Drawing.Drawing2D.GraphicsPath path = new System.Drawing.Drawing2D.GraphicsPath();
path.AddPolygon(new[]
{
    new Point(20, 20),
    new Point(40, 10),
    new Point(180, 70),
    new Point(160, 260),
    new Point(80, 140)
});
path.AddEllipse(40, 40, 300, 300);
this.Region = new Region(path);

请注意,这里的坐标是指窗口而非客户区域。同时请注意,GraphicsPath 对象中重叠的图形默认会相互“反转”(可以通过设置 path.FillMode = FillMode.Winding 来防止这种情况发生)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接