怎么把bmp dc顺时针旋转90度?

dingshanwei123 2014-10-31 04:56:13
hBkDC-源dc,RhBkC,目的dc,方法1可以实现,但是速度慢,方法2快但是旋转后图形失真,还有其他高效的方法吗
方法1:
RhBkDC=CreateCompatibleDC(hThisDC);
SelectObject(RhBkDC, CreateCompatibleBitmap(RhBkDC,384,640));
DWORD tick;
tick=GetTickCount();
for( int I = 0 ;I<640;I++)
{
for(int J = 0 ;J<384;J++)
{
BitBlt(RhBkDC, J, I , 1, 1, hBkDC,I, 384-J-1, SRCCOPY);
}
}

方法2:
CPoint Pt[3];
Pt[0].x = 384;
Pt[0].y = 0;
Pt[1].x = 384;
Pt[1].y = 640;
Pt[2].x = 0;
Pt[2].y = 0 ;
CBitmap bm;
ZeroMemory(&bm,sizeof(bm));
HDC RhBkDC=CreateCompatibleDC(hThisDC);
SelectObject(RhBkDC, CreateCompatibleBitmap(RhBkDC,384,640));
PlgBlt(RhBkDC, Pt, hBkDC, 0, 0, 640,384,bm, 0, 0); //翻转90度
...全文
240 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
dingshanwei123 2014-11-05
  • 打赏
  • 举报
回复
引用 4 楼 sxqinge 的回复:
有些平台是不支持GDI+的,比如WINCE 6.0等。 还是计算矩阵吧。
如何计算?请指教,谢谢!
dingshanwei123 2014-11-05
  • 打赏
  • 举报
回复
用GDI+ 的 Graphics::DrawImage 可以指定 destPoints, 任意方向旋转 [/quote] 试了,用drawimage是可以实现旋转并显示出来,但是我需要获取旋转后的图片dc以便后面的操作,如何获取呢?
lx624909677 2014-11-05
  • 打赏
  • 举报
回复
可以试试opencv中的宣传图像,不会失真
zgl7903 2014-11-05
  • 打赏
  • 举报
回复
http://wenku.baidu.com/link?url=aLs90dcAX0ajIOgj6mUUmbBeSDrOWkHUySsfGVRMAsl90XSwkwkvv1mpAnID6WpHyHsK7ExurGl1x2l9Hby4ZYYWuIFfVXMEd33UnezVdpG
Yofoo 2014-11-03
  • 打赏
  • 举报
回复
GDI的插值效果不好, 所以失真, 可以用GDI+ 用GDI+ 的 Graphics::DrawImage 可以指定 destPoints, 任意方向旋转
dingshanwei123 2014-11-03
  • 打赏
  • 举报
回复
有知道吗 帮帮忙,谢谢了
sxqinge 2014-11-03
  • 打赏
  • 举报
回复
有些平台是不支持GDI+的,比如WINCE 6.0等。 还是计算矩阵吧。
smilecabbage 2014-11-03
  • 打赏
  • 举报
回复
2楼的方法正确 。 GDI+ 中有RotateTransform。无敌

19,468

社区成员

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

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