2011-05-03 82 views
4

我正在创建无边框形式,我想向其添加自定义边框。但是,当我为表单添加背景时,它不能很好地显示,并且不透明。无边界形式的C#透明边框

这就是我要为我的境界: Screenshot

当我设置窗体的透明度,白色的影子消失了,我不知道做什么用什么。

+0

你使用WPF还是WinForms? – ZoolWay 2011-05-03 17:16:07

+0

WinForms。我认为这将是一个在WPF中做eaiser? – SaintHUN 2011-05-03 17:18:20

+0

对于透明颜色,使用像[Fuchsia](http://msdn.microsoft.com/en-us/library/system.drawing.color.fuchsia.aspx)这样的颜色可能会有更好的运气(并且更常用) 。 – 2011-05-03 17:22:13

回答

2

好吧,我欺骗了一下,但是我所做的只是重写CreateParams来绘制阴影,即使它是无边框窗口。它确实是我想要的,所以我随它去了。
感谢您的帮助!

5

有一种方法可以在WinForms中使用半透明(alpha)图像作为窗体背景,如本文所述:A lovely goldfish desktop pet (using alpha-PNG and GDI+)

它使用本机互操作将图像与桌面混合。

此外,检查出UpdateLayeredWindow function (User32.dll)pinvoke.net。还有一个如何使用它的例子。

[编辑]

还有上pinvoke.net到Mike Swanson's blog article大约相同的受试者的链接。它使用与上述链接中描述的相同的代码,但它是一个VS项目,它完全符合OP的要求:以半透明PNG图像作为背景的飞溅形式。

+0

谢谢,现在就通过它。 – SaintHUN 2011-05-03 17:27:46

+0

使用UpdateLayeredWindow()只是使用Opacity和TransparencyKey属性的一种困难方法。 – 2011-05-03 23:31:46

+0

@Hans:“TransparencyKey”只定义了一种被认为透明的颜色,类似于GIF图像支持透明度的方式。 OP想要实现的是全面支持alpha通道,允许在PNG文件中使用不透明度渐变。 – Groo 2011-05-04 07:07:02