快速/简单的方法将Windows位图旋转90度?

这是解决多function打印机驱动程序的最后一招。 我想渲染到一个兼容的位图,然后旋转它之前或复制到打印机DC。

我熟悉这个推荐GDI +的前一个问题 ,但是我很想知道是否只有使用GDI的答案。

这些技术都应该工作:

  1. PlgBlt ,其“执行颜色数据的位从源设备上下文中的指定矩形到目标设备上下文中的指定平行四边形的位块传送”,旋转平行四边形的坐标

  2. SetWorldTransform ,传入旋转矩阵和普通BitBlt

请注意,在这两种情况下,源DC中不应该有旋转转换,只有目的地。

恐怕我现在还不能给你一个代码示例,但是一些使用Google的例子也提供了一些如何使用这些函数来旋转任意度数的示例,您可以将其修改为硬编码为90度:

  • 使用PlgBlt (原谅这里的语言…这是VB)
  • 使用SetWorldTransformBitBlt 。 请注意,如果你的代码在其他地方修改了转换(例如,任何VCL的TGraphicControl后裔将在其Paint方法中完成此操作,并且很可能MFC和其他常见的WinAPI包装器可能也会这样做),则应该使用GetWorldTransform来保存当前的转换,应用你的ModifyWorldTransform而不是设置(覆盖)当前的转换。
  • 在查找这些示例时,我遇到了一个有趣的,非常古老的Microsoft支持问题,显示如何绘制到旋转或非矩形区域 。 我怀疑,为了轮换,这个代码几乎不如其他功能之一。

我不确定这些数据与使用GDI +相比是否简单快捷