透明渐变标题栏

By admin at 2018-07-30 • 0人收藏 • 211人看过

还是记录下校长在群里发的代码,以后方便学习。

import win.ui;

/*DSG{{*/

var winform = win.form(text="透明渐变标题栏";right=759;bottom=469;border="none")

winform.add(

plus={cls="plus";left=0;top=0;right=760;bottom=488;db=1;dl=1;dr=1;dt=1;z=1}

)

/*}}*/

import win.ui.simpleWindow3;

win.ui.simpleWindow3(winform)

import inet.http;

winform.plus.background = "http://pic23.photophoto.cn/20120429/0027011761472219_b.jpg";

winform.onEraseBkgnd  = λ() 0;

winform.show() 

win.loopMessage();

这样图像缩放流畅些,为了示例简单使用plus支持加载网址的功能,实际使用图像放到窗口背景上就可以


知道为什么加了 winform.onEraseBkgnd  = λ() 0; 就不闪了吗

窗口的绘制流程是这样:

1、擦除窗口的背景

2、画窗口

3、挨个擦除控件的背景

4、挨个画控件像上面我发的那个程序,用了一个plus控件占据了整个窗口,其实是不用画背景的。但窗口不知道啊,计算机没办法聪明到这个程度,他会僵硬的依旧画一遍,虽然很快,但因为面积很大,就会有一个快速的闪烁过程。

窗口画背景的时候,会发送WM_ERASEBKGND消息,我们可以拦截这个消息,但这个消息也会触发onEraseBkgnd事件,所以我们在onEraseBkgnd回调里拦截也可以。

winform.onEraseBkgnd  = function() return 0; 

就是告诉窗口你不用画背景了(交给我来帮你画吧,这样就省掉了一步)

补充语法知识点:

winform.onEraseBkgnd  = λ() 0;

也就是 

winform.onEraseBkgnd  = lambda() 0;

相当于 

winform.onEraseBkgnd  = function() return 0;


类似的像web.form这种浏览器控件,也会用到这个方法,因为网页会自己画背景,容器窗口就没必要多余的画一次

登录后方可回帖

登 录
信息栏
本站永久域名:HtmLayout.Cn
纯私人站,当笔记本用的,学到哪写到哪,目前正在学aardio+halcon机器视觉.
本 站 主 站:Stm32cube中文网
Aardio 官方站:Aardio官方
Aardio最新功能:Aardio官方更新日志
aardio在线手册Aardio在线手册
Htmlayout皮肤Htmlayout皮肤引擎介绍
黑猫Aar教程网:简码编程
C大Aardio论坛:Aar爱好者论坛
AARDIO语言QQ群:70517368
赞助商:才仁机械
下载站:非凡软件站
Loading...