我正在寻找一些C ++代码让我快速移动窗口周围的位图,在移动时恢复背景。目前我在应用程序初始化期间将Window内容捕获到位图,在OnPaint()中我绘制了这个位图,然后绘制了重叠的位图。我是双重缓冲油漆。叠加的位图位置随鼠标移动而使窗口无效。

这种方法很好,但是当背景窗口很大(想想Windows桌面)并且PC很慢时它太慢了。我的猜测是,每次鼠标移动时重绘大背景位图都是瓶颈。必须有一个更好,更快的方法,但我的搜索没有找到我需要的答案。

有帮助吗?

解决方案

可能你最快的方法是将可移动图像存储在一个位图中,然后在内存中维护相同大小的第二个临时位图。要在主图像上绘制可移动位图,首先要使用BitBlt API函数将要绘制可移动位图的区域复制到临时位图中,然后将可移动位图BitBlt到主图像上。当您移动可移动位图时,您将1)BitBlt临时位图到其原始位置,然后2)BitBlt新位置到临时位图,然后3)BitBlt可移动图像到主位图中的新位置。

其他提示

您应该查看图片列表实现拖动 效果

  

Win32 API包含的功能   在屏幕上拖动图像。该   拖动功能可移动图像   顺畅,有色,没有任何   闪烁的光标。两个都蒙面了   可以拖动未屏蔽的图像。

当然,用户实际上不必拖动图像。 通过改变图像位置来做到这一点。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top