C# Graphics旋转和TranslateTransform及RotateTransform用法(含GDI矩阵释义)

C# Graphics旋转有两个主要函数TranslateTransform(int x,int y)及RotateTransform(int angle);

TranslateTransform() 中x,y参数代表旋转变换中心,使用这个函数会将屏幕原点(左上角0,0)移到设定的x,y。如果想将自己绘制的椭圆以中心旋转,

步骤如下:

1.用TranslateTransform() 函数,参数x,y设置为待旋转椭圆中心,则坐标原点会移到(x,y),不要忘记这一点;

2.使用RotateTransform()函数,angle设置为希望旋转的整数角度,旋转方向是顺时针,如图示意:




注:如果前面使用了TranslateTransform()更改原点,如果继续使用DrawEllipse(pen,int  x,int  y,int w,int h)绘制椭圆,那么这里的x,y就要改为0,0,(因为屏幕坐标原点0,0已经移到我们设定的的椭圆中心)

原文链接:https://blog.csdn.net/qianlinjun/article/details/65034430

 

GDI+矩阵

gdi+提供了矩阵(Matrix)这个类,利用它可以对所绘制的图形进行旋转,拉伸,平移等操作。

matrix代表了一个3 x 3的矩阵,由于这个矩阵的第三列总是(0, 0, 1),所以矩阵只使用了六个数据,从matrix的一个构造函数中可以看出,如下:

Matrix(      

    REAL m11,
    REAL m12,
    REAL m21,
    REAL m22,
    REAL dx,
    REAL dy
);

 

Parameters

    m11
        [in] Real number that specifies the element in the first row, first column.
    m12
        [in] Real number that specifies the element in the first row, second column.
    m21
        [in] Real number that specifies the element in the second row, first column.
    m22
        [in] Real number that specifies the element in the second row, second column.
    dx
        [in] Real number that specifies the element in the third row, first column.
    dy
        [in] Real number that specifies the element in the third row, second column.

    其中dx, dy分别表示x, y 方向的平移量。矩阵如下:



    进行操作:

    一、平移

    通过与一个进行平移的矩阵相乘,平移矩阵的格式如下:

二、拉伸

拉伸矩阵格式如下:

三、旋转

旋转矩阵格式如下:


原文链接:https://blog.51cto.com/qsjming/478105

 

 变换坐标系,就是在当前坐标系中,进行缩放、旋转、平移或直接乘变换矩阵等操作,得到新坐标系,之后,在新的坐标系中又可以进行变换,如此循环往复。最后用户调用api进行绘图时传入的坐标是最新的坐标系中的坐标,这样,就可以保持坐标不变,仅通过变换坐标系实现绘制。

    变换物体,就是仅存在一个坐标系,即世界坐标系,物体的坐标就是在世界坐标系中的坐标,变换物体即物体的坐标乘变换矩阵,得到世界坐标系中的新坐标。

    GDI+对变换坐标系和变换物体的支持:

    各API中加参数MatrixOrder.Prepend即表示在当前变换矩阵前插入矩阵(左乘),对应变换坐标系,加参数MatrixOrder.Append即表示在当前变换矩阵后插入矩阵(右乘),对应变换物体。GDI+中坐标以行向量表示,坐标变换形如:

           |m11, m12, 0|

|x,y,1|  |m21, m22, 0| = |x', y', 1|,

           |m31, m32, 1|

用P表示点,M表示变换矩阵则有

P M1 M2 ... Mn = P',

其表示变换物体,即在世界坐标系中,对物体进行若干次变换,得到新的物体坐标。

当变换坐标系时,

用Q表示坐标,N表示变换矩阵择优

Q Nn Nn-1 ... N1 = Q',

其表示从最新的坐标系中坐标Q倒推出世界坐标系中的坐标Q'的过程。
-----------------------------------
原文链接:https://blog.51cto.com/u_2924037/1890496

posted @ 2022-07-16 16:44  chenlight  阅读(3751)  评论(0编辑  收藏  举报