【问题标题】:C++ Direct 2D How To Resize ID2D1BitmapC++ Direct 2D 如何调整 ID2D1Bitmap 的大小
【发布时间】:2012-11-11 23:07:41
【问题描述】:

我正在为自己正在制作的游戏制作一个简单的 GUI 库,并且每个控件都需要有一个位图,以便在控件需要重绘时绘制到该位图。当它不需要重绘时,它将有一个已经制作好的位图准备显示到屏幕上。由于可以调整控件的大小,因此也需要调整此 Bitmap 的大小,以便可以正确地将控件完全绘制到其中。我该如何实现这一点,因为它似乎不是调整位图大小的 Resize 方法,不像可以调整大小的 ID2D1HwndRenderTarget?

【问题讨论】:

  • DirectX 库中不存在用于调整 ID2D1Bitmap 大小的简单函数。作为进一步的澄清。您可以通过保存原始图像数据并对其应用不同的采样算法来调整它的大小。但是没有内置函数可以为您做到这一点。
  • 你想达到什么效果?
  • 我正在为我正在制作的游戏制作一个简单的 GUI 库,并且每个控件都需要有一个位图来绘制,以便在控件需要重绘时绘制。当不需要重绘时,它将有一个已经制作好的位图准备显示到屏幕上。由于可以调整控件的大小,因此也需要调整此位图的大小,以便可以正确地将控件完全绘制到其中。
  • 为什么不把这个放在你的问题上,让它更清楚呢?

标签: c++ bitmap resize direct2d


【解决方案1】:

无法调整ID2D1Bitmap 的大小。创建位图后设置尺寸。同样适用于IDXGISurfaceID3D11Texture2D。 您将需要创建一个不同大小的新位图并自己复制数据。

【讨论】:

  • 这是对的一半,您确实需要创建一个具有所需大小的新位图 - 但您不需要“复制数据”,您可以将旧位图绘制到新位图创建渲染目标并调用dc->DrawImage。如果你只需要作物,你就完成了。如果您还需要缩放图像,可以在绘图期间使用效果CLSID_D2D1Scale 或世界变换 (dc->SetTransform) 以实现所需的缩放级别。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-27
相关资源
最近更新 更多