GDI能实现图片反旋转显示吗?

一线coder 2009-11-25 11:02:12
VC中,能单纯用GDI API能实现图片反旋转显示吗?比如旋转90度,180度等
这要怎么实现,高手请赐教
...全文
366 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
chehw 2009-11-27
  • 打赏
  • 举报
回复

SetGraphicMode(hdc, GM_ADVANCED);
XFORM xForm;
xForm.eM11=(FLOAT)cos(degree);
xForm.eM12=(FLOAT)sin(degree);
xForm.eM21=-(FLOAT)sin(degree);
xForm.eM22=cos(degree);
xForm.eDx=(FLOAT)0.0;
xForm.eDy=(FLOAT)0.0;
SetWorldTransform(hdc, &xForm);

Draw(hdc); //display


wuchuncai 2009-11-27
  • 打赏
  • 举报
回复
最好重构数据,且重构 90。,180。都不难,又不需要插值。
rxf_mpg 2009-11-27
  • 打赏
  • 举报
回复
GDI在winxp下支持高级模式,可以构造一个旋转矩阵
rxf_mpg 2009-11-27
  • 打赏
  • 举报
回复
GDI坐标变换
laviewpbt 2009-11-27
  • 打赏
  • 举报
回复
90度 270度这种改变图像宽度和高度的操作是无法直接用GDI的API实现的,你必须自己重新构造DIB的数据。
180度这种可以用StretchDIBits这类的函数。
一线coder 2009-11-25
  • 打赏
  • 举报
回复
如果是png图片,可以吗?
会飞的老鱼 2009-11-25
  • 打赏
  • 举报
回复
如果是BMP位图,可以使用设备无关位图(DIB)操作函数StretchDIBits,具体作法是将SrcWidth设置为-bmpWidth(水平翻转,即逆时针旋转180),SrcHeight设置为-bmpHeight(垂直翻转,即顺时针旋转180度),更详细的说明请参考MSDN。
会飞的老鱼 2009-11-25
  • 打赏
  • 举报
回复
实际上,不管是何种图片,最终显示在显示器上都是以位图的形式呈现出来的(因为迄今为止,我们所用的显示器都是光栅式显示器,图像是以点阵形式表现的,这就是位图),从这个角度来说,任何图片都行,因为你可以从其显示创建相应的位图,依这一原理,你可创建内在DC,然后先将图像显示在内存DC,然后由内存DC中的位图来创建旋转效果的位图。
fandh 2009-11-25
  • 打赏
  • 举报
回复
只要能读出来后,应该是一样的吧!
如何读,用CXIMAGE,这是开源的,下载地址如下:
http://www.codeproject.com/KB/graphics/cximage.aspx

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧