zoukankan      html  css  js  c++  java
  • [C#绘图]Matrix类


    想要从入门到精通一门语言,最好的学习文档就是官方提供的文档,比如说OpenCV的学习,最权威的学习资料还是其官方的学习文档,C#和.net的最好的学习入门文档还是MSDN。但是好多人一开始真的不会用,所以忽略了这宝贵的材料,而去学习一些其它的乱七八糟的资料或者书籍。

    我也是刚了解到MSDN的一个使用技巧:如果你想查一个类的用法或者一些类的用法,直接在MSDN中找这个类所在的命名空间,它能告诉你相关的好多东西。下面就来开一下在System.Drawing.Drawing2D这个命名空间下的Matrix类。


    概述:

    这个类封装表示几何变换的3x3仿射矩阵。此类不能被继承。

    命名空间:System.Drawing.Drawing2D

    程序集:System.Drawing(在System.Drawing.dll中)


    用法:

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

    Matrix myMatrix = new Matrix(0, 1, -1, 0, 3, 4) 

    构造下面图形中显示的矩阵。变换


    复合变换

    复合变换是一个接一个的变换序列,看看下面列表中的矩阵和变换(矩阵的本质是其所在空间的一种跃迁(变换)):

    矩阵A 旋转90度
    矩阵B 在x方向上缩放2倍
    矩阵C 在y方向上平移3个单位

    在仿射空间中,如果从由矩阵[2 1 1]表示的点(2,1)开始,先后乘以A、B、C,在点(2,1)将按列出的顺序经历三种变换。

    [2 1 1]ABC = [-2 5 1]

    可以不将复合变换的三部分存储于三个独立的矩阵,而是一起乘以A、B和C来得到存储整个复合变换的单个的3x3矩阵。假定ABC=D,则一个点乘以D得出的结果与一个点先后乘以A、B、C的结果相同。

    [2 1 1]D = [-2 5 1]

    下图显示了矩阵A、B、C和D

    变换

    复合变换的矩阵可以通过将几个单独的变换矩阵相乘而得到,这就意味着任何仿射变换的序列均可存储于单个的Matrix对象中。

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

    Matrix类提供了几种构建复合变换的过程:Multiply、RotateAt、Rotate、Scale、Shear和Translate。下面的示例创建了一个复合变换(先选装30度,再在y方向上缩放2倍,让后在x方向上平移5个单位)的矩阵。

    Matrix myMatix = new Matix();//将Matrix类的一个新实例初始化为单位矩阵
    myMatrix.Rotate(30);
    myMatix.Scale(1, 2, MatrixOrder.Append);
    myMatix.Translate(5, 0, MatrixOrder.Append);

    其中MatrixOrder的两个属性还不知道具体怎么玩?以后探讨。

    链接地址:https://msdn.microsoft.com/zh-cn/library/system.drawing.drawing2d.matrix(v=vs.110).aspx

    https://msdn.microsoft.com/zh-cn/library/system.drawing.drawing2d.matrixorder(v=vs.110).aspx

  • 相关阅读:
    shell28获取命令结果的第几个参数
    在 Amazon EC2 Linux 实例上手动安装 SSM 代理 Raspbian
    Trying out the Intel Neural Compute Stick 2 – Movidius NCS2
    Flask
    virtualenv/venv 和 pip
    轻量化卷积神经网络:SqueezeNet、MobileNet、ShuffleNet、Xception
    向 AWS Elastic Beanstalk 部署 Flask 应用程序
    Installing the AWS Toolkit for Visual Studio Code
    Installing the AWS SAM CLI on macOS
    树莓派显示器电源管理禁止屏幕休眠
  • 原文地址:https://www.cnblogs.com/stemon/p/4252268.html
Copyright © 2011-2022 走看看