【问题标题】:What is the best way to resize a Bitmap in Windows?在 Windows 中调整位图大小的最佳方法是什么?
【发布时间】:2012-01-01 18:16:22
【问题描述】:

所以,我正在开发一个文本编辑器。我使用双缓冲在屏幕上绘画。所以基本上我有一个离屏位图,我在上面画,然后把它复制到屏幕上。现在,当文本编辑器的窗口调整大小时,我也需要调整屏幕外位图的大小。那么调整位图大小的好方法是什么?我想也许可以删除旧对象并使用CreateCompatibleBitmap 创建一个新位图,但我想知道这是否是正确的方法。

语言:使用 Win32 API 的 C++

【问题讨论】:

  • 语言?我认为它是 C++ 或 C,但是...
  • 为什么需要调整它的大小?听起来这需要时间,而且我看不到好处。
  • @DavidHeffernan:大概用于后台缓冲区的位图的大小与窗口相同。如果窗口增大,则代码将需要更大的后台缓冲区。后台缓冲区可以与虚拟桌面一样大,但这可能大得离谱。此外,对巨大位图的一部分进行 blitting 可能效率低下,并且桌面大小可能会发生变化,因此您仍然必须处理调整大小的问题。平铺方法可能会出现撕裂和闪烁,这会错过使用后台缓冲区的要点。

标签: winapi bitmap gdi


【解决方案1】:

使用 CreateCompatibleBitmap 将起作用,然后您需要在其上调用 BitBlt 以将现有后备缓冲区的内容复制到调整大小的缓冲区。我认为使用 GDI 没有更有效的方法。

【讨论】:

    【解决方案2】:

    如果正在考虑将 CreateCompatibleBitmap 与 BitBlt 一起使用,您可能希望查看 StretchBlt。 StretchBlt 的工作方式与 BitBlt 类似,但会调整源图像的大小以适合目标区域。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-10-02
      • 1970-01-01
      • 2011-07-09
      • 1970-01-01
      • 2011-03-08
      • 1970-01-01
      • 2011-01-04
      相关资源
      最近更新 更多