透明渐变标题栏

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

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

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这种浏览器控件,也会用到这个方法,因为网页会自己画背景,容器窗口就没必要多余的画一次

登录后方可回帖

登 录
信息栏
 私人小站

本站域名

ChengXu.XYZ

投诉联系:  popdes@126.com



快速上位机开发学习,本站主要记录了学习过程中遇到的问题和解决办法及上位机代码分享

这里主要专注于学习交流和经验分享.
纯私人站,当笔记本用的,学到哪写到哪.
如果侵权,联系 Popdes@126.com

友情链接
Aardio官方
Aardio资源网


才仁机械


网站地图SiteMap

Loading...