废话不多说,直接开干!
窗体透明一般事plus

import win.ui;
/*DSG{{*/
var winform = win.form(text="透明题栏";right=286;bottom=176;border="none")
winform.add(
button={cls="button";text="提交";left=176;top=87;right=231;bottom=108;z=3};
edit={cls="edit";text="Edit";left=86;top=55;right=234;bottom=76;edge=1;z=2};
static={cls="static";text="用记名";left=37;top=56;right=109;bottom=77;transparent=1;z=1}
)
/*}}*/

//给窗体设置背景
import inet.http;//加上http
winform.image = "https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fhbimg.huabanimg.com%2F1c6b595acfd6652b9a080110a0f7b6fc5a94ee33513d-qdBaTS_fw658&refer=http%3A%2F%2Fhbimg.huabanimg.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=auto?sec=1654231490&t=169f387371bd97076777e269d07668fc";

//显示窗体
winform.show()
win.loopMessage();


窗体透明化之后,里面的控件脱离原来的窗口显示在窗体外面之后怎么还原回去?

我建立了一个窗口,里面与一个背景色为蓝色的plus. 我设置了窗口透明度是80,然后里面的控件plus也透明化了.

用到代码

winform.plus.orphanWindow();

plus的父窗体为winform

win.setParent(winform.plus.hwnd,winform.hwnd);

plus控件确实再一次透明化了,但是发现它的位置不是在原来的地方.
再设置plus相对winform位置…

var x,y = winform.plus.getPos();
var bx,by = win.toClient(winform.hwnd,x,y)

win.setParent(winform.plus.hwnd,winform.hwnd);
winform.plus.setPos(bx,by);

运行后,确实透明化在原来的地方.
按钮事件,可在图形编辑视图下,双击按钮快速自动生成
但,问题又来了. 拖动窗口发现,这个plus不是随着窗体移动相对窗口静止,而是随着移动窗口移动的更大幅度
看下完整代码

import win.ui;
//设置窗体透明度
/*DSG{{*/
var winform = win.form(text="aardio form";right=759;bottom=469)
winform.add(
button={cls="button";text="button";left=86;top=372;right=253;bottom=429;z=3};
button2={cls="button";text="button2";left=462;top=356;right=613;bottom=427;z=4};
//设置透明度
edit={cls="edit";text="白叔King";left=93;top=90;right=328;bottom=125;edge=1;font=LOGFONT(h=-21);multiline=1;z=1};
plus={cls="plus";left=105;top=172;right=567;bottom=240;bgcolor=15780518;z=2}
)
/*}}*/

import console;
console.open();

winform.button2.oncommand = function(id,event){
//winform.msgbox( winform.button2.text );
/*
console.dump(
win.getPos(winform.plus.hwnd,true)
)
console.dump(
winform.plus.getPos()
)
*/
var x,y = winform.plus.getPos();
var bx,by = win.toClient(winform.hwnd,x,y)

win.setParent(winform.plus.hwnd,winform.hwnd);
winform.plus.setPos(bx,by);

}


winform.button.oncommand = function(id,event){
//winform.msgbox( winform.button.text );

winform.edit.orphanWindow();
winform.plus.orphanWindow();
}


winform.transparent(80);

winform.show()
win.loopMessage();

看下效果截图
初次运行安装对应库

给电脑添加透明护眼蒙版(鼠标穿透) 以上代码参考了, win.ui.mask库里的代码

其实还是可以直接用这个库来实现,上面就是为了学习

要想改变蒙版的颜色, 就把窗口背景色改一改就可以了

看代码

import win.ui;
/*DSG{{*/
var winform = win.form(text="aardio form";right=205;bottom=447;bgcolor=8409088;border="none")
winform.add(
plus={cls="plus";text="半透明写标题";left=0;top=0;right=206;bottom=31;align="left";color=16777215;dl=1;dr=1;dt=1;font=LOGFONT(h=-16);notify=1;textPadding={left=8};z=1}
)
/*}}*/

winform.plus.background = 0x33000812;
winform.transparent(60)
winform.plus.orphanWindow(true)
winform.plus.onMouseDown = function(wParam,lParam){
winform.hitCaption()

}

import win.ui.shadow
win.ui.shadow(winform);

winform.show()
win.loopMessage();

可以设置尺寸,透明度
看下效果

原文链接:https://blog.csdn.net/weixin_37254196/article/details/124569117