2011-05-03 114 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