一直对transparent使用不好,最近摔了几次,稍微摸索了点出来,与大家共同分享。

先上结果图片:

transparent的三种使用方法,true,false,以及设置透明色。
前两种就不说了,主要看第三种。

一开始我设置透明色,使用如下语句
winform.transparent(,0xfffff);
但对于很多的颜色设置总是失败(我也不知道为什么,即使前面直接用winform.bgcolor=0xffffff也失败。。。。)

后来发现了在窗口的生成语言里也有这么一句:
bgcolour = 一串数字。。。
我试着用这个数字来填写透明色,如:
红色的背景,用这样的代码,winform.transparent(,255);
居然每次都能够成功。

PS:不认识的颜色,可以用背景颜色的吸管取一下,再到后面的代码去查看。或者论坛里有转换颜色的工具。。。

transparent对设置的透明色的准确性非常高,稍微偏差一点,即使只相差1点,也无法变成透明。
因为这一点,也吃了很多的亏。
开始用PS处理完存成jpg的格式,总是画面破损很严重,后来才知道jpg保存的时候,颜色会有少许失真。
用BMP格式(低版本的PS不支持存BMP)来保存文件效果就大为改观了。

最后要提的是处理图片的一些技巧。
我尝试过效果最好的办法是,用特别的单色(将来要设置成透明,必须是唯一色),新建图层,填充后,放在图片下面作为背景。然后放大图片,用矩形工具,不断delete需要透明的部分(有斜线或曲线购置出的选区,删除时会造成周围细微变色),这样出来的效果完全可以比肩htmlayout载入的png图片。
总之,总体思路就是要创建一张透明部分,严格纯色的图片,这样效果会很好。

最后上一个从网上下载的播放器的图片,来制作的例子,就是之前的图片,供大家参考,希望对大家有所帮助。

import win.ui;
/*DSG{{*/
var winform = ..win.form( image=$"\res\1_110328090910_20.bmp";bottom=612;parent=...;text="aardio Form";border="none";right=681 )
winform.add( )
/*}}*/

winform.wndproc = function(hwnd,message,wParam,lParam){
select(message) {//判断消息类型
case 0x201/*_WM_LBUTTONDOWN 鼠标按下*/{
winform.hitCaption(); //使整个窗体可以拖动
}
}
//无返回值则继续调用默认回调函数
}

winform.transparent(128,5720627)
winform.show()
win.loopMessage();
return winform;

完整文件:仿播放器