1、引用dll动态库
//hwnd是透明窗体的句柄 crKey为颜色值, bAlpha是透明度,取值范围是[0,255], dwFlags是透明方式,可以取三个值:
Function ulong SetLayeredWindowAttributes(ulong hwnd,ulong crKey,ulong bAlpha , ulong dwFlags) LIBRARY "user32.dll"
Function ULong SetWindowLongA(Long hwnd, Long nIndex, Long dwNewLong) Library 'user32.dll'
2、透明代码如下
SetWindowLongA(handle(this),-20,786688)
//第一种全部透明包含控件
SetLayeredWindowAttributes(handle(this),0,200,2)
//第二种根据rgb颜色来设置透明
SetLayeredWindowAttributes(handle(this),rgb(255,0,0),200,1)
//第三种,第一种和第二种结合
SetLayeredWindowAttributes(handle(this),rgb(255,0,0),200,3)
参数详解:
参数 1、hwnd是透明窗体的句柄
参数 2、crKey为颜色值(RGB颜色)
参数 3、bAlpha是透明度,取值范围是[0,255]
参数 4、dwFlags是透明方式,可以取三个值:1,2,3
注意:
1、dwFlags参数为【1】的时候,crKey参数【无效】,窗口【全部透明】包含控件
2、dwFlags参数为【2】的时候,crKey参数【有效】,bAlpha参数【无效】,窗口根据【crKey】颜色参数来透明
比如我窗口颜色是红色rgb(255,0,0),crKey参数设置成rgb(255,0,0),crKey参数和窗口颜色一致,窗口就会透明,但控件不透明。(第2种方式对窗口控件也有效)
3、dwFlags参数为【3】的时候,上面2种结合,crKey【有效】,bAlpha【有效】,和crKey参数颜色一致的控件,透明度不根据bAlpha参数来,反之可用bAlpha参数设置透明度。