提问,label控件移动时如何才能不闪烁
vb吧
全部回复
仅看楼主
level 5
超星之灵
楼主
label控件同timer移动的时候闪烁很难受...
2021年09月08日 13点09分
1
level 5
卖萌是什么意思
interval值尽量不要低于80
2021年09月08日 13点09分
2
level 11
余思培
Label移动流程(未验证):
清除原位置内容
绘制新内容
故在快速移动时就会频繁清除、绘制,看起来就是闪烁效果
2021年09月08日 14点09分
3
level 13
隨風🍁缒夢
label控件是完全可以用print或API DrawText、OutText等替代,AutoRedraw=True(开启双缓冲,原理就是先将所有要绘制内容绘制到后备缓冲DC上,然后一次性Blt到前台显示)后绘制,Cls清屏可以做到Label效果,而且不会闪烁
2021年09月09日 03点09分
4
隨風🍁缒夢
AutoRedraw=True后输出的是持久图像,就是绘制到后备缓冲DC上内容还在,当擦除窗体背景或窗体被遮挡就会触发WM_PAINT消息,在WM_PAINT消息中完成绘制并Blt到前台显示,这个是低层的,目前只要大概了解下就行,你以后深入搞GDI和Windows消息时才会接触到)
2021年09月09日 04点09分
超星之灵
@隨風🍁缒夢
👌🏻谢谢!
2021年09月09日 11点09分
www2465645
@隨風🍁缒夢
没有这么复杂 我可以做到20毫秒不闪烁
2021年10月27日 20点10分
隨風🍁缒夢
@www2465645
办法当然有,放一个Windowless为True且BackStyle为透明的UserControl可以解决,不说是因为我也绝对不会用这个方法,Label的刷新率慢了,自己可以测试,有时能解决办法未必是最好的
2021年10月28日 00点10分
level 8
tbzp666
interval值设置过低,是人眼的问题,我以前在做程序《移动的文字》中遇到到
2021年11月09日 05点11分
7
1