微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

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

移动语义和窗口句柄。 DeleteObject安全处理?

将TrueType字形转换为PNG图像?

创build内存设备上下文…为一个位图,而不是一个设备(不显示

高效地获取Windows桌面的屏幕截图

如何直接在Windows中分配video卡内存?

这些技术都应该工作:

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

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

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

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

使用PlgBlt (原谅这里的语言…这是VB)

使用SetWorldTransform和BitBlt 。 请注意,如果你的代码在其他地方修改了转换(例如,任何VCL的TGraphicControl后裔将在其Paint方法中完成此操作,并且很可能MFC和其他常见的WinAPI包装器可能也会这样做),则应该使用GetWorldTransform来保存当前的转换,应用你的ModifyWorldTransform而不是设置(覆盖)当前的转换。

在查找这些示例时,我遇到了一个有趣的,非常古老的Microsoft支持问题,显示如何绘制到旋转或非矩形区域 。 我怀疑,为了轮换,这个代码几乎不如其他功能之一。

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐