如何旋转 ATL::CImage 对象

Posted

技术标签:

【中文标题】如何旋转 ATL::CImage 对象【英文标题】:How to rotate an ATL::CImage object 【发布时间】:2012-03-18 12:41:10 【问题描述】:

我的问题基本上是,如何旋转窗口ATL::CImage 对象?

我已经使用 windows ATL CImage 对象加载了一个 JPG 图片,例如:

CImage myImage; myImage.Load(L"IMG1.JPG");

我还设法改变了像素(使像素更亮)并保存了新图像,现在我正在努力旋转我的图像。

我只需要能够以 90 度为增量旋转,所以任意旋转将是一个奖励

【问题讨论】:

【参考方案1】:

仅演示,省略错误处理,一开始不应该这样做,只需使用 GDI+ 图像而不是 ATL CImage 并节省像素复制的往返行程。

Bitmap* gdiPlusBitmap=Bitmap::FromHandle(atlBitmap.Detach());
gdiPlusBitmap->RotateFlip(Rotate90FlipNone);
HBITMAP hbmp;
gdiPlusBitmap->GetHBITMAP(Color::White, &hbmp);
atlBitmap.Attach(hbmp);

【讨论】:

这完全符合我的要求,谢谢。我会听取您的建议并直接使用 GDI+ 来检索图像等 :)

以上是关于如何旋转 ATL::CImage 对象的主要内容,如果未能解决你的问题,请参考以下文章

使用vs2005cimage类显示图片出现问题。求大神指教

JAVA中如何把一个Image对象旋转任意角度

如何根据对象的本地位置/旋转在 OpenGL 中移动/旋转对象

如何使游戏对象在旋转平面中围绕 Unity 中的另一个游戏对象旋转

如何匹配另一个对象的旋转增量?

如何仅旋转特定对象而不影响opengl中的其他对象?