我希望有一个表单,其中表单上的控件是完全可见的,但表单本身是不可见的。如果我更改了表单的Opacity
,这会使表单和控件都半透明,所以这不起作用。
我不能通过设置表单TransparencyKey
来执行此操作,因为表单上有PictureBox
。如果PictureBox中的图像恰好包含与TransparencyKey
匹配的像素,则它们在表单中显示为开口,这是我不想要的。
答案 0 :(得分:2)
随着我从未使用它的警告,只是跑了一次,认为“整洁!”继续......
查看System.Drawing.Drawing2D.GraphicsPath并设置表单的Region
属性。我在基本的Windows窗体应用程序中添加了两个按钮:
public Form1()
{
InitializeComponent();
Rectangle r1 = new Rectangle(button1.Location, button1.Size);
Rectangle r2 = new Rectangle(button2.Location, button2.Size);
GraphicsPath gp = new GraphicsPath();
gp.AddRectangle(r1);
gp.AddRectangle(r2);
this.Region = new Region(gp);
}
我用矩形近似了按钮的形状;使用此代码,您可以在按钮的角上看到表单背景颜色。您需要为每个控件计算出封闭路径,并将它们分别添加到路径中。您需要考虑表单标题栏或边框样式引入的任何偏移量。
更新:我做了一些调查,并有几种可能的解决方法:
GraphicsPath
方法将pictureBox.Visible
设置为False
。BackColor
和TransparencyKey
属性以匹配此新颜色Hans Passant's答案。答案 1 :(得分:2)
TransparencyKey是获得此功能的唯一方法。选择正确的颜色。 Color.Fuchsia有着悠久的传统,成为首选的颜色,可以追溯到Win32开发的早期阶段。用它来攻击你的眼睛,看看它的优点。