如何在 Windows GDI 中旋转位图?
我将如何在 Windows GDI、C++ 中旋转位图?
How would I go about rotating a Bitmap in Windows GDI,C++?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
我将如何在 Windows GDI、C++ 中旋转位图?
How would I go about rotating a Bitmap in Windows GDI,C++?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(3)
您可以使用 GDI+ (
#include
) 来完成此操作。 Graphics 类具有 RotateTransform 方法。这允许任意旋转。使用 Image::RotateFlip() 如果您只需要旋转90度,效率就高很多。You can do it with GDI+ (
#include <gdiplus.h>
). The Graphics class has the RotateTransform method. That allows arbitrary rotations. Use Image::RotateFlip() if you only need to rotate by 90 degree increments, that's a lot more efficient.听起来你必须使用 PlgBlt。将矩形的 4 个角作为 2D 点,旋转它们,然后调用 PlgBlt。
来自 MSDN 位图旋转:
Sounds like you have to use PlgBlt. Take your rectangle's 4 corners as 2D Points, rotate them, then call PlgBlt.
From MSDN Bitmap Rotation:
另一种可能性(除了已经建议的可能性之外)是使用
SetWorldTransform()
。不同之处在于它是模态的并且适用于整个 DC,而不仅仅是单个操作。如果您想旋转一张位图,但其他东西不旋转,那么它可能不是您的最佳选择。如果你想绘制一些旋转的东西,或者(特别是)如果你想旋转你绘制的所有东西(至少到一个DC中),它可以很好地工作。Another possibility (beyond those already suggested) is to use
SetWorldTransform()
. This is different in that it is modal and applies to the DC as a whole, not just a single operation. If you want to rotate one bitmap rotated, but other things without rotation, it's probably not your best choice. If you want to draw a number of things rotated, or (especially) if you want to rotate everything you draw (at least into one DC) it can work quite nicely though.