StretchDIBits和BitBlt出现的延时问题

tracing 2008-04-07 01:08:52
我使用双缓冲显示一张DIB位图,2000 * 600的,先用StretchDIBits将客户区内的点写到内存DC上,然后在鼠标所在位置画一个十字架宽和高分别是客户区的宽和高,最后再用BitBlt将内存DC拷贝当前DC上,鼠标每移动一次就刷新一次,在我的电脑上一切正常,鼠标移动和画图都很平滑,但换了一台机器,老古董了,就出现了延时,当鼠标移动时,十字架就跟鼠标分离了,放大缩小也出现了延时,客户那边的一台机,我问他什么配置,到现在还没回应,这个是哪里出问题了呢,请赐教
...全文
175 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
wangji666666 2008-04-23
  • 打赏
  • 举报
回复
把它系统重装!
Torch009 2008-04-15
  • 打赏
  • 举报
回复
应该还是有问题的。最好先重启下或注销,如果还是这样就应该优化了。
zhoujianhei 2008-04-15
  • 打赏
  • 举报
回复
很正常,除了优化没什么可做的。
tracing 2008-04-11
  • 打赏
  • 举报
回复
那台机的配置还可以啊,2.06的CPU,256M的内存,64M的显存,我这里有一台机2.13的CPU,128M的内存,32M的显存,运行起来都很顺畅,我不画十字架,在他那台机上还是老问题,搞得我郁闷,另外我还画了网格,把每个点隔开,就是说ONDRAW里有三步操作:
1、StretchDIBits 画点
2、DrawGrid 画网格
3、BitBlt 显示

多余的东西都去掉了,还是老样子
cnzdgs 2008-04-07
  • 打赏
  • 举报
回复
可以优化一下,方法同上。
jameshooo 2008-04-07
  • 打赏
  • 举报
回复
要更换设计思路,可以把十字架当作两个矩形,鼠标移动时把被十字架覆盖的背景存到两个缓存中,直接画十字架,鼠标再次移动时,用缓存的两个矩形来恢复背景,再缓存两个新位置的矩形,再话十字架
cofanz 2008-04-07
  • 打赏
  • 举报
回复
以前也碰到过,感觉象是显卡驱动的问题,换一下最新的驱动试试。
scq2099yt 2008-04-07
  • 打赏
  • 举报
回复
机器有问题那就没招了
tracing 2008-04-07
  • 打赏
  • 举报
回复
十字架要充满整个客户区的,这样方便比较位图中的两个点是否在同一行或者同一列
tracing 2008-04-07
  • 打赏
  • 举报
回复
但是其他同类软件在那台电脑上就没问题,很平滑
jameshooo 2008-04-07
  • 打赏
  • 举报
回复
如果十字架占用的矩形比较小,也能做些优化。整个背景图片放入缓存的内存DC,并且背景在WM_ERASEBKGND中绘制(如果图片没变化,可以不绘制,以提高效率),十字架在WM_PAINT中绘制,仅仅重绘十字架占用的矩形区域,也就是BitBlt时选择合适的区域,不要整个矩形操作。
jameshooo 2008-04-07
  • 打赏
  • 举报
回复
没有问题,CPU主频的问题

19,470

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧