许可优化
许可优化
产品
产品
解决方案
解决方案
服务支持
服务支持
关于
关于
软件库
当前位置:服务支持 >  软件文章 >  在GDI+中使用Matrix类对2D矢量图形进行平移、缩放操作

在GDI+中使用Matrix类对2D矢量图形进行平移、缩放操作

阅读数 6
点赞 0
article_banner

在GDI+中用Mattix类对2D矢量图形进行平移、缩放操作

1.    GDI+中点坐标的格式及矩阵乘法的定义

GDI+中的的点按照1行3列的格式,即(x坐标,y坐标,1),其中1为哑元坐标。变换矩阵为3行3列格式,根据矩阵的乘法,变换后的坐标仍为1行3列的格式。

根据矩阵乘法的定义,A*B与B*A不一定相等,所以在对图形的坐标系实行多种变换时,图形变换的先后顺序将直接影响变换的结果。

在GDI+中,不同变换矩阵的顺序通过MatrixOrder来来调整,默认采用Matrix. Prepend矩阵放置方式,另一种放置方式为Matrix. Append,当矩阵的乘法运算时提供了选项。例如,坐标点P,平移变换矩阵T,比例变换矩阵S,采用P*T*S的顺序时,在GDI中分为两步走:

第一步,T变换:由于是坐标点乘以变换矩阵,不需要对乘法顺序进行选取。

dc.TranslateTransform(150, 150);    //平移变换

第二步,S变换:由于T*S,此时需要说明乘法顺序

dc.ScaleTransform(1.75f, 0.5f, MatrixOrder.Append); //比例变换,后置

dc.ScaleTransform(1.75f, 0.5f);     //比例变换,默认前置
//dc.ScaleTransform(1.75f, 0.5f, MatrixOrder.Prepend);


2.  测试实例

定义一个矩形

None.gifRectangle rect = new Rectangle(0, 0, 150, 150);

不同的变换顺序得到不同的结果。图1和图2 分别显示了先平移变换后比例变换的结果和先比例变换后平移变换的结果,其中红色表示变换前的图形,蓝色表示中间变换的结果,黑色表示最终的结果。
 
TS1.jpg

                                                图1 先平移后缩放
 
TS2.jpg

                                              图2 先缩放后平移
 

   作者采用Mathcad软件验证了上面的结果,如图3所示。
 
TS4.png

                                                图3 角点坐标计算
 


免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删

相关文章
技术文档
QR Code
微信扫一扫,欢迎咨询~
customer

online

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 board-phone 155-2731-8020
close1
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

姓名不为空

姓名不为空
手机不正确

手机不正确

手机不正确
公司不为空

公司不为空

公司不为空