All articles| All Pictures| All Softwares| All Video| Go home page| Write articles| Upload pictures

Reading number is top 10 articles
php验证码显示问题解决办法_php资料_编程技术
在C#中动态调用native,dll的导出函数_[Asp.Net教程]
如何自动发布MS,SQL,SERVER数据库_[SQL,Server教程]
ASP.NET,2.0,中的,Windows,身份验证_.net资料_编程技术
利用C#创建,IIS,站点并设置.NET,Framework版本为ASP.NET,2.0,的方法,二_[Asp.Net教程]
asp.net(c#)常用函数、方法_[Asp.Net教程]
动态创建内容时所用的W3C,DOM属性和方法_.net资料_编程技术
使用PHP制作动态网页过程中的五个技巧_php资料_编程技术
delphi结构化异常处理
ASP.NET2.0中GridView控件的隐藏列的问题_[Asp.Net教程]
Reading number is top 10 pictures
鸡也看毛片
Sell the barbecue as says father du breul2
非常漂亮的泳装美女
A man's favorite things3--ZhouWeiTong
In the world the most mysterious 21 place landscape3
9.3阅兵全景图8-航空梯队
The money of more than 100 countries and regions5
Kim jong il's mistress, national beauty JinYuJi actor2
云南大理的美女
Summer is most suitable for young people to travel in China5
Download software ranking
Rio big adventure
Unix video tutorial13
功夫熊猫2(上集)
在线棋牌游戏3.05版
打鸟视频
c#程序设计案例教程
虚拟机汉化软件
White deer villiage
Call Of Duty5
SP3 for SQL2000
qq published in(发表于) 2014/7/11 9:16:27 Edit(编辑)
C#中GDI+变形的矩阵表示形式

C#中GDI+变形的矩阵表示形式

C#中GDI+变形的矩阵表示形式

变形的矩阵表示形式

m×n矩阵是排列成m行和n列的一系列数,例如,图1为几个矩阵表示形式。

用户可以通过将单个元素相加来合并两个尺寸相同的矩阵,例如,图2表示两个矩阵相加。



图1 矩阵



图2 矩阵相加

m×n矩阵可与一个n×p矩阵相乘,结果为一个m×p矩阵,但如果两个矩阵相乘,第一个矩阵的列数必须与第二个矩阵的行数相同。例如,图3表示两个矩阵相乘。

如果将平面中的点视为1×2矩阵,则可通过将该点乘以一个2×2矩阵来将该点变换,例如,图23显示了应用于点(2, 1)的几个变换。

图4中显示的所有变换都是线性变换,如果变换(如平移)不是线性的,则不能表示为与2×2矩阵相乘的形式。例如,从点(2, 1)开始,将其旋转90°,然后在x方向将其平移3个单位,在y方向将其平移4个单位,这时可先使用矩阵乘法,再使用矩阵加法来完成此操作,如图5所示。

后面跟一平移的线性变换称为仿射变换。将仿射变换存储于一对矩阵(一个用于线性部分,一个用于平移)的替换方案是将整个变换存储于3×3矩阵。如果要使3×3矩阵起作用,平面上的点必须存储于具有虚拟第3坐标的1×3矩阵中。通常的方法是使所有的第3坐标等于1,例如,矩阵[2 1 1]表示点(2,1)。将图5中“点的平移”转换为仿射变换的结果如图6所示。



图3 矩阵相乘



图4 点的变换



图5 点的平移

在前面的示例中,点(2,1)映射到了点(2,6),请注意,3×3矩阵的第3列数字为:0、0、1,对于仿射变换的3×3矩阵而言,重要的数字是列1和列2中的6个数字,如图7所示,矩阵左上角的2×2部分表示变换的线性部分,第3行中的前两项表示变换的平移部分。



图6 仿射变换



图7 仿射变换分解图

在GDI+中,可以在Matrix对象中存储仿射变换。由于表示仿射变换的矩阵的第3列总是(0,0,1),因此在构造Matrix对象时,只需指定前两列中的6个数即可。

GDI+中,还有一种变换叫复合变换。复合变换是一个接一个的变换序列,它的矩阵表示形式可通过将几个单独的变换矩阵相乘而得到。Matrix类提供构建复合变换的方法包括Multiply、Rotate、RotateAt、Scale、Shear和Translate。

注意:

① 复合变换的顺序非常重要,一般说来,先旋转、再缩放、然后平移,与先缩放、再旋转、然后平移是不同的。同样,矩阵相乘的顺序也是非常重要的,一般说来,ABC 与 BAC 不同。

② Matrix类属于System.Drawing.Drawing2D命名空间。




添加到del.icio.us 添加到新浪ViVi 添加到百度搜藏 添加到POCO网摘 添加到天天网摘365Key 添加到和讯网摘 添加到天极网摘 添加到黑米书签 添加到QQ书签 添加到雅虎收藏 添加到奇客发现 diigo it 添加到饭否 添加到飞豆订阅 添加到抓虾收藏 添加到鲜果订阅 digg it 貼到funP 添加到有道阅读 Live Favorites 添加到Newsvine 打印本页 用Email发送本页 在Facebook上分享


Disclaimer Privacy Policy About us Site Map

If you have any requirements, please contact webmaster。(如果有什么要求,请联系站长)
Copyright ©2011-
uuhomepage.com, Inc. All rights reserved.