GDI+用matrix缩放图形后,坐标改变的问题

sghdls 2011-09-27 08:09:58

用VC + GDI+ 实现任意 GraphicsPath 放大缩小, 如:

GraphicsPath rectPath; //一个矩形
PointF gPoints[4] = { PointF(100, 10 ), PointF( 200, 10 ), PointF( 200, 80 ), PointF( 100, 80 ) };
rectPath.AddLines( gPoints, 4 );
rectPath.CloseFigure();
Graphics->DrawPath( &Pen( Color::Green ), &rectPath ); //没放大之前
Matrix mx; //放大
mx.Scale( 2.0f, 2.0f, MatrixOrderPrepend );
rectPath.Transform( &mx );
Graphics->DrawPath( &Pen( Color::Red ), &rectPath ); //放大以后


我发现图形放大后, 坐标位置改变了,我本意不是这样的.

请问怎样才能 以图形的中心点来放大?

我想在图形的原位置放大, 不想发生偏移. 请知道的人帮帮忙了~~谢了!

...全文
389 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
ex_impression 2011-09-27
  • 打赏
  • 举报
回复
MatrixOrderPrepend是以矩形的左上点为中心放大的。你还需要设置Matrix.translate参数。
ljn398431 2011-09-27
  • 打赏
  • 举报
回复
帮顶下

19,468

社区成员

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

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