如何在Windows GDI,C ++中旋转位图?
答案 0 :(得分:8)
你可以用GDI +(#include <gdiplus.h>
)来做。 Graphics类具有RotateTransform method。这允许任意旋转。如果您只需要以90度的增量旋转,请使用Image::RotateFlip(),这样效率会更高。
答案 1 :(得分:5)
听起来你必须使用PlgBlt。将矩形的4个角作为2D点,旋转它们,然后调用PlgBlt。
将位图复制到 平行四边形;使用PlgBlt 函数,执行位块 从源中的矩形转移 将设备上下文转换为平行四边形 目标设备上下文。至 旋转位图,应用程序必须 在世界上提供坐标 单位,用于角落 平行四边形。
答案 2 :(得分:3)
另一种可能性(超出已经建议的那种)是使用SetWorldTransform()
。这是不同的,因为它是模态的并且作为整体应用于DC,而不仅仅是单个操作。如果你想旋转一个位图旋转,但其他东西没有旋转,它可能不是你最好的选择。如果你想绘制一些旋转的东西,或者(特别是)你想要旋转你绘制的所有东西(至少是一个DC),它可以很好地工作。