C 透明窗體製作方法比較 效能較差方法

2021-09-22 05:08:53 字數 967 閱讀 3998

製作透明窗體辦法有好幾種,各有優缺點.

我們先來看看c#本身提供的辦法

1:通過設定窗體的 transparencykey實現

例:窗體中的白色會變成透明

this.backcolor =color.white; this.transparencykey = color.white; 

2:通過設定窗體的 opacity 實現

例:窗體的透明度為50%

this.opacity = 0.5; 

為了更好說明問題,我們先看乙個例項。

(1)新建乙個winform應用程式

(2)formload中新增以下**:

this.backcolor = color.white;

this.transparencykey = color.white;

(3)加入乙個label,text = "transparencykey demo",backcolor = white(或透明)

(4)按f5執行如下圖所示

結論:transparencykey只支援透明或不透明,不支援過度色,比如png中的從不透明到透明的過渡色會顯示出討厭的效果。

再來看看opacity,我們發現它的顯示效果很好,不存在transparencykey的過度色問題,但是opacity設定的是窗體的透明度,和普通視窗相比,只是透明度不同而已,其他沒有區別。如果你把通過opacity製作的透明窗體蓋在其他程式的視窗上,你看得到後面的視窗,卻沒法直接操作後面的窗體。並且該視窗上所有的控制項也會產生透明效果,無法單獨控制。

最後,我要說的是,不管transparencykey的實現,還是opacity的實現,其實都是對setlayeredwindowattributes()函式的封裝,只是引數不同而已。

**:

WPF透明窗體製作

先上效果圖 如下 注 圖中window標籤的name屬性是w。其中border用來實現透明效果,grid用來呈現窗體內的控制項,為了避免窗體內的控制項變成透明的,所以border,grid必須處在同一級別上。其中border用來實現透明效果,grid用來呈現窗體內的控制項,為了避免窗體內的控制項變成...

C 透明窗體製作方法比較(1)

製作透明窗體辦法有好幾種,各有優缺點.我們先來看看c 本身提供的辦法 1 通過設定窗體的 transparencykey實現 例 窗體中的白色會變成透明 this backcolor color.white this transparencykey color.white 2 通過設定窗體的 opa...

VC 製作透明窗體

在2000下 定義常量 define ws ex layered 0x00080000 define lwa alpha 0x00000002 宣告函式 extern c 標頭檔案 產生透明視窗 不要忘了給視窗的exstyle加入ws ex layered屬性 setwindowlong getsa...