Onsize()时如何解决闪烁现象?我已经使用了双缓冲,在滑块移动时没出现闪烁,但是窗口大小改变时,却闪烁了

wanyyl2353406 2010-12-18 12:54:38
如何解决这个问题?大家发言
...全文
303 点赞 收藏 6
写回复
6 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
allenhiman 2010-12-20
OnEraseBkgnd直接返回True,然后在OnSize调用LockWindowUpdate();与UnlockWindowUpdate();不要加这些 把你自绘控件所在的窗口属性加上 WS_CLIPCHILDEN这个风格试试
回复
arong1234 2010-12-19
双缓冲只会加快刷新速度,而闪烁是因为你先擦除背景,然后再绘制,导致颜色先从前景色跳到背景色,然后再跳回前景色引起的,你只要在Invalidate/InvalidateRect不擦除背景应该就好了
回复
SKINSE界面库 2010-12-19
你要明白闪烁的原理,以前界面库(http://www.skinse.com)的作者发了篇文字,很不错,有详细的总结。貌似他的博客有。
回复
wanyyl2353406 2010-12-19
[Quote=引用 4 楼 arong1234 的回复:]
双缓冲只会加快刷新速度,而闪烁是因为你先擦除背景,然后再绘制,导致颜色先从前景色跳到背景色,然后再跳回前景色引起的,你只要在Invalidate/InvalidateRect不擦除背景应该就好了
[/Quote]
我在擦除背景的函授OnEraseBkgnd直接返回True,然后在OnSize调用LockWindowUpdate();与UnlockWindowUpdate();这样确实不会闪烁了,但是却出现了残影,我自绘的控件不会出现残影,但是系统自带的控件却会(如文字编辑框),如何解决这个问题?
回复
放在OnPaint()中...
回复
varding 2010-12-18
你的对话框里有哪些东西?你怎么绘图的?最好把代码贴出来大家看看,你只说现象没法帮你

你试试border设置成Resizing后改变窗口大小还会闪烁吗?
回复
相关推荐
发帖
界面
创建于2007-09-28

1.5w+

社区成员

VC/MFC 界面
申请成为版主
帖子事件
创建了帖子
2010-12-18 12:54
社区公告
暂无公告