社区
界面
帖子详情
窗口改变大小时,有闪烁,怎么高效解决?
nj_dobetter
2008-05-18 09:30:52
C++Builder 拖出来的界面,窗口大小改变时,界面根本不闪烁;
Java做出来的程序界面也是,拖动改变窗口大小,窗口毫无闪烁,据说Java是用了双缓冲做到的。
单单就这MFC怪,客户区闪烁的很厉害。那怕是MFC向导生成的最基本的程序,也闪烁。
看到有些方法说覆盖父类OnEraseBkgnd 函数。这样的话,有多少种控件,就得写多少个子类,比较麻烦
请教各位,怎么高效解决这个问题
...全文
174
2
打赏
收藏
窗口改变大小时,有闪烁,怎么高效解决?
C++Builder 拖出来的界面,窗口大小改变时,界面根本不闪烁; Java做出来的程序界面也是,拖动改变窗口大小,窗口毫无闪烁,据说Java是用了双缓冲做到的。 单单就这MFC怪,客户区闪烁的很厉害。那怕是MFC向导生成的最基本的程序,也闪烁。 看到有些方法说覆盖父类OnEraseBkgnd 函数。这样的话,有多少种控件,就得写多少个子类,比较麻烦 请教各位,怎么高效解决这个问题
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
2 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
shuiyan
2008-05-18
打赏
举报
回复
拖动时要绘制的就不小了吧?比如右下45度拖动,应该全都要刷新的吧?做肯定可以做就是了。不过得等高手愿意分享经验才行。
cnzdgs
2008-05-18
打赏
举报
回复
跟你绘制界面有关,尽量只绘制需要刷新的区域,如有必要就使用双缓冲。
MFC
解决
窗口
保存及重绘
闪烁
问题的一种比较好的方案 v1.0.5
包含文件说明: 1. SolveFlashingAndRedrawv1.0.5 纯净版 无
闪烁
的MFC应用框架,实际使用时把此工程改名成你要建立的项目名称,然后开始开发即可。你熟悉MFC的话研究这个框架的半个
小时
应该就明白并熟练运用了。 2.SolveFlashingAndRedrawv1.0.5 demo版 利用SolveFlashingAndRedrawv1.0.4框架写的一个示例小程序,主要展示框架要实现的优点特性。 3.VCRn 修改vc工程名工具 ___作者 田彬.exe 用网上找到的一个MFC改工程名称的小工具,很实用。如果你想使用本框架就可以用它来改成你想要的工程名了。 4. 未使用本框架的类似功能简化程序 没有使用框架的程序,实现的功能和Demo类似。但是运行之后
改变
窗口
大小等,会发现图形
闪烁
很厉害! 5. SolveFlashingAndRedrawv1.0.5 demo版 运行截图.jpg 6. ReadMe.txt 说明文件。 补充说明: 工程使用vc6.0开发,如果你用vc6.0双击.dsw文件无法打开,请先打开vc6.0然后把.dsw拖动到vc上面。 如果这种方法还是无法打开,你新建一个vc6.0 mfc sdi程序,把示例中框架拷贝到这个新工程中,运行即可,代码量不是太多。 框架说明: /****************************************************** SolveFlashingAndRedraw框架说明 ******************************************************/ /** 项目名称: demo框架 版本号: v1.0.5 第一作者: Jef 地址: 中国/江苏 日期: 20100724 电子邮箱: dungeonsnd@126.com 版权: 1.您可以修改及免费使用本程序。 2.修改之后附上您的个人信息发送到上面的作者邮箱,作者负责在全面测试后发布您修改后的新版本。 3.您使用本程序而导致任何伤害以及经济损失,由过错方依法承担所有责任,一概与第一作者及合作单位无关。 4.如果您使用本程序则表示您已经同意此版本协议!否则请勿使用! 项目功能: SolveFlashingAndRedraw框架是MFC
解决
窗口
保存及重绘
闪烁
问题的一种比较好的方案(Win32
解决
方法类似)。 版本历史: v1.0.1 20091126 第一版本 v1.0.2 20091212 第二版本 1. 修改了部分变量的名字使其更符合其意义 2. 增加为两个工程,一是带demo例子的,另一是不带demo的纯净版. 3. 修改了其中一个错误. 如 CreateCompatibleDC之后没有调用DeleteDC等. v1.0.3 对v1.0.2进行了整理 v1.0.4 20100416 在v1.0.3的基础上进行整理,并增加了裁剪区,提高了绘图效率! v1.0.5 20100724 1. 添加了一个工具类CMemBmpDc,帮助产生一个内存DC,并把指定的内存位图选进去。方便绘图。 2. 演示了在适当时机如何
高效
画图,见Demo版的DrawSinwave(bool bDrawOnScreen)函数。 演示了用两种方法来绘图, 方法1. 直接绘图到屏幕上, 同时绘图到内存位图上,内存位图不会立即贴到屏幕上减少了内存拷贝的时间,提高了效率, 将来
窗口
失效时OnPait贴图到屏幕上. 这种方法的优点时减小了不必要的内存拷贝,缺点时当绘图内存复杂并且非常耗时可能会导致
闪烁
。 故适用于像本Demo的这样绘图(本例函数只绘制一小段直线)。 方法2. 绘制到内存位图上后把应该重绘的这一小块设成裁剪区,然后立即OnPait重绘这个裁剪区。 运行步骤: 直接运行demo里面的程序,在
窗口
上任意拖拉鼠标画线,然后点击菜单栏的几个示范菜单项,然后移动
窗口
、
改变
窗口
大小、最大最小化
窗口
、用其它
窗口
覆盖此
窗口
、鼠标放到任务栏。。。 以上种种操作观察
窗口
内的图像变化。可以发现
窗口
内图像几乎看不到
闪烁
,而且
窗口
的元素已经保存下来重绘时任然可以看到图像。 如何使用: 进行项目开发时,可以先建立项目,然后把本
解决
方案框架拷贝到新建项目中即可。 也可以自己根据需要修改纯净版。 其它: 友情提示,小心 View类头文件及View类的实现文件中有说明,使用时别把它弄到你实际项目里哦! 进行大量复杂的图形的输出,而且对效率要求特别高时要考虑适当修改此框架(如增加裁剪区)后再使用哦。 关于如何在此框架的基础上提高绘图效率可以参阅下面的文章 如何提高绘图的效率 文章摘录 http://hi.baidu.com/new8sun/blog/item/68ccba8a80c3aadafc1f1079.html MFC双缓冲
解决
图象
闪烁
2009-06-13 23:03 显示图形如何避免
闪烁
,如何提高显示效率是问得比较多的问题。而且多数人认为MFC的绘图函数效率很低,总是想寻求其它的
解决
方案。 MFC的绘图效率的确不高但也不差,而且它的绘图函数使用非常简单,只要使用方法得当,再加上一些技巧,用MFC可以得到效率很高的绘图程序。
MFC
窗口
隐藏时
解决
闪烁
问题
MFC
窗口
隐藏时
解决
闪烁
问题,VS2008单文档程序
maximize
改变
窗口
大小函数
这个好用,可任意
改变
图形
窗口
的大小,就是这样的,不是太好用,不是太好使用
Qt6实现支持Win11无边框
窗口
、自动贴靠布局、缩放(上下左右、四个角拖动缩放)、双击最大化或者恢复最大化之前的位置与大小、
窗口
阴影实现、去除缩放黑影等基础
窗口
.zip
Qt6实现支持Win11无边框
窗口
、自动贴靠布局、缩放(上下左右、四个角拖动缩放)、双击最大化或者恢复最大化之前的位置与大小、
窗口
阴影实现、去除缩放黑影等基础
窗口
。.zip
在Win32程序中应用OpenGL进行多
窗口
显示
运行时点击渲染,弹出对话框后在四个text控件中分别显示四幅OpenGL渲染得到的图像。用到了多线程
界面
15,980
社区成员
115,867
社区内容
发帖
与我相关
我的任务
界面
VC/MFC 界面
复制链接
扫一扫
分享
社区描述
VC/MFC 界面
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章