如何在Windows GDI中旋转位图?

时间:2010-02-16 01:32:09

标签: c++ gdi

如何在Windows GDI,C ++中旋转位图?

3 个答案:

答案 0 :(得分:8)

你可以用GDI +(#include <gdiplus.h>)来做。 Graphics类具有RotateTransform method。这允许任意旋转。如果您只需要以90度的增量旋转,请使用Image::RotateFlip(),这样效率会更高。

答案 1 :(得分:5)

听起来你必须使用PlgBlt。将矩形的4个角作为2D点,旋转它们,然后调用PlgBlt。

来自MSDN Bitmap Rotation

  

将位图复制到   平行四边形;使用PlgBlt   函数,执行位块   从源中的矩形转移   将设备上下文转换为平行四边形   目标设备上下文。至   旋转位图,应用程序必须   在世界上提供坐标   单位,用于角落   平行四边形。

答案 2 :(得分:3)

另一种可能性(超出已经建议的那种)是使用SetWorldTransform()。这是不同的,因为它是模态的并且作为整体应用于DC,而不仅仅是单个操作。如果你想旋转一个位图旋转,但其他东西没有旋转,它可能不是你最好的选择。如果你想绘制一些旋转的东西,或者(特别是)你想要旋转你绘制的所有东西(至少是一个DC),它可以很好地工作。