快速/简单地将Windows位图旋转90度?

快速/简单地将Windows位图旋转90度?,windows,bitmap,gdi,Windows,Bitmap,Gdi,这是一个最后的努力工作围绕一个有缺陷的打印机驱动程序。我想渲染到兼容的位图,然后在复制到打印机DC之前或复制到打印机DC时旋转它 我熟悉哪种推荐的GDI+,但我很想知道是否有只使用GDI的答案。这些技术中的任何一种都应该有效: ,它使用旋转平行四边形的坐标“执行颜色数据位从源设备上下文中的指定矩形到目标设备上下文中的指定平行四边形的位块传输” 传递旋转矩阵和法线的组合 注意,对于这两种情况,源DC中应该没有旋转变换,只有目标DC 恐怕我现在不能给你一个代码示例,但一些谷歌搜索确实找到了一些如何使

这是一个最后的努力工作围绕一个有缺陷的打印机驱动程序。我想渲染到兼容的位图,然后在复制到打印机DC之前或复制到打印机DC时旋转它


我熟悉哪种推荐的GDI+,但我很想知道是否有只使用GDI的答案。

这些技术中的任何一种都应该有效:

  • ,它使用旋转平行四边形的坐标“执行颜色数据位从源设备上下文中的指定矩形到目标设备上下文中的指定平行四边形的位块传输”

  • 传递旋转矩阵和法线的组合

  • 注意,对于这两种情况,源DC中应该没有旋转变换,只有目标DC

    恐怕我现在不能给你一个代码示例,但一些谷歌搜索确实找到了一些如何使用这些函数旋转任意度数的示例,你可以将其修改为硬代码90度:

    • (请原谅这里的语言…它是VB)
    • 。请注意,如果您的代码在其他地方修改了转换(例如,任何VCL的后代都将在其
      Paint
      方法中完成此操作,MFC和其他常见的WinAPI包装器可能也会这样做),您应该使用来保存当前转换,并应用您的转换,而不是设置(覆盖)当前的转变
    • 在我寻找这些例子时,我遇到了一个有趣的、非常古老的例子。我怀疑,对于旋转,这段代码不如其他函数之一好

    与使用GDI+相比,我不确定这些技术是否算是快速或简单:)

    这些技术中的任何一种都应该有效:

  • ,它使用旋转平行四边形的坐标“执行颜色数据位从源设备上下文中的指定矩形到目标设备上下文中的指定平行四边形的位块传输”

  • 传递旋转矩阵和法线的组合

  • 注意,对于这两种情况,源DC中应该没有旋转变换,只有目标DC

    恐怕我现在不能给你一个代码示例,但一些谷歌搜索确实找到了一些如何使用这些函数旋转任意度数的示例,你可以将其修改为硬代码90度:

    • (请原谅这里的语言…它是VB)
    • 。请注意,如果您的代码在其他地方修改了转换(例如,任何VCL的后代都将在其
      Paint
      方法中完成此操作,MFC和其他常见的WinAPI包装器可能也会这样做),您应该使用来保存当前转换,并应用您的转换,而不是设置(覆盖)当前的转变
    • 在我寻找这些例子时,我遇到了一个有趣的、非常古老的例子。我怀疑,对于旋转,这段代码不如其他函数之一好

    与使用GDI+相比,我不确定其中任何一项是否算是快速或简单:)

    谢谢您的回复!最后我做了一个艰难的过程,获取位图数据,旋转它,并创建一个新的位图。谢谢你的回复!最后,我以一种艰难的方式完成了这项工作:获取位图数据,旋转它,并创建一个新的位图。