二维图形几何变换有平移,缩放,旋转,错切,反射等几种。
二维图形由点或直线段组成的,而直线段又由两个端点连接而成的,从而对二维图形的变换都全部转换成点的变换。
所以下面我们就点的变换原因来讨论。
在讨论下面的问题之前,我们得先学习一个 System.Drawing.Drawing2.Matrix类,该类是坐标变换的最常用的类,当然你可以自己进行矩阵运算。

1. 平移变换:
   平移变换的变换矩阵为:  Tm= 二维几何图形变换及其GDI+实现,对应的Matrix定义为 Matrix m = new Matrix(1,0,0,1,Mx,My);
  其中Mx是水平方向移动的距离,My是垂直方向的距离,向左负向右正,向下负向上正。

2. 缩放变换
  平移变换的变换矩阵为:  Ts= 二维几何图形变换及其GDI+实现,对应的Matrix定义为 Matrix s = new Matrix(Sx,0,0,Sy,0,0);
其中Sx是水平方向上缩放的比例,Sy是竖直方向上缩放的比例,大小1是放大,小于1是缩小,不能小于0。

3. 旋转变换
  旋转变换的变换矩阵为: Tr=二维几何图形变换及其GDI+实现,对应的Matrix定义为Matrix r = new Matrix(cos二维几何图形变换及其GDI+实现,sin二维几何图形变换及其GDI+实现,-sin二维几何图形变换及其GDI+实现,cos二维几何图形变换及其GDI+实现,0,0);
其中sin,cos均为三角函数,二维几何图形变换及其GDI+实现为以原点旋转的角度数。

现举例说明如何处理这种变换:
把一个位于窗口中心的矩形放大5倍,而且旋转30度。这些变形都是以该矩形的中心点为准。

上面的动作分解为,
一是将图像平移到坐标原点,
二是放大,三是旋转。
对应的三个Matrix为

1二维几何图形变换及其GDI+实现Matrix m = new Matrix(1001this.Width/2this.Height/2); //平移
2二维几何图形变换及其GDI+实现Matrix s = new Matrix(500500); //放大
3二维几何图形变换及其GDI+实现Matrix r = new Matrix((float) Math.Cos(30), (float) Math.Sin(30), (float-Math.Sin(30), (float) Math.Cos(30), 00); //旋转
4二维几何图形变换及其GDI+实现

再利用矩阵运算,将三个矩阵相乘后所得的新矩阵赋值给g.Transform.

1二维几何图形变换及其GDI+实现m.Multiply(s);
2二维几何图形变换及其GDI+实现m.Multiply(r);
3二维几何图形变换及其GDI+实现g.Transform = m;
4二维几何图形变换及其GDI+实现g.DrawPath(Pens.Black, gp);
5二维几何图形变换及其GDI+实现

完整代码:

 1二维几何图形变换及其GDI+实现GraphicsPath gp = new GraphicsPath();
 2g.Dispose();

上面代码的操作结果为:
二维几何图形变换及其GDI+实现


相关文章:

  • 2021-11-08
  • 2021-08-14
  • 2021-04-08
  • 2021-03-31
  • 2022-12-23
  • 2021-10-03
  • 2021-04-14
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2021-04-22
  • 2022-01-06
  • 2022-12-23
  • 2021-09-25
相关资源
相似解决方案