UWP开发-二维变换以及三维变换。UWP开发-二维变换以及三维变换。

每当开中,由于某些需求,我们也许需要举行有动,缩放,旋转甚至三维变换,所以自己来讲说在UWP中这些易的落实方式。

于付出中,由于一些需求,我们也许用举行片挪,缩放,旋转甚至三维变换,所以自己来讲说在UWP中这些易的兑现方式。

一、

一、

  二维变换:

  二维变换:

 UIElement.RenderTransform

 UIElement.RenderTransform

  a、TranslateTransform,平移:

  a、TranslateTransform,平移:

    属性:X,Y我信任大家都理解怎么用,这里虽无讲话废话了

    属性:X,Y我信任大家还晓得怎么用,这里虽非开口废话了

  b、RotateTransform,旋转:

  b、RotateTransform,旋转:

    属性:Angle

    属性:Angle

  c、ScaleTransform,缩放:

  c、ScaleTransform,缩放:

    属性:ScaleX,ScaleY

    属性:ScaleX,ScaleY

  d、SkewTransform,扭曲:

  d、SkewTransform,扭曲:

    属性:AngleX,AngleY

    属性:AngleX,AngleY

  e、MatrixTransform,矩阵变换

  e、MatrixTransform,矩阵变换

    Xmal用法:

    Xmal用法:

<MatrixTransform Matrix="M11 M12 M21 M22 X Y">
<MatrixTransform Matrix="M11 M12 M21 M22 X Y">

    这个就算稍微复杂一点,理论及可开另外移。说起来复杂,其实也尽管是一个易矩阵而就

    这个就聊复杂一点,理论及可开另外移。说起来复杂,其实也尽管是一个转换矩阵而就

矩阵M:

矩阵M:

M11 M12 0
M21 M22 0
  X   Y 1
M11 M12 0
M21 M22 0
  X   Y 1

自我眷恋,学过线性代数的相应都知了咔嚓,就是矩阵的乘法;假设点p0(x0,y0),则易后的点吗p1=[x0,y0,1]*M:

自身眷恋,学过线性代数的当都理解了咔嚓,就是矩阵的乘法;假设点p0(x0,y0),则转移后的触及吗p1=[x0,y0,1]*M:

    x1 =  x0 * M11 + x0 * M21 + X ;

    x1 =  x0 * M11 + x0 * M21 + X ;

    y1 = y0 * M12 + y0 * M22 + Y;

    y1 = y0 * M12 + y0 * M22 + Y;

  p1(x1,y1).

  p1(x1,y1).

ps:矩阵的触发就简单的游说就是是履行*列相加,也就是说要矩阵X点乘Y,则X的列数必须等于Y的行数。

ps:矩阵的点就简单的游说就算是实行*排相加,也就是说要矩阵X点乘Y,则X的列数必须等于Y的行数。

额外的,如果需要同时做多种变换,UWP提供了两种方法:
额外的,如果需要同时做多种变换,UWP提供了两种方法:

  1.TransformGroup,变换群组:

  1.TransformGroup,变换群组:

    

    

           <TransformGroup>
                    <RotateTransform />
                    <ScaleTransform />
                </TransformGroup>
           <TransformGroup>
                    <RotateTransform />
                    <ScaleTransform />
                </TransformGroup>

因为当RenderTransform下只能发出一个子元素,所以当用而用强易时需要一个TransfromGroup。

坐当RenderTransform下只能发出一个子元素,所以当得以用多更换时用一个TransfromGroup。

  2.CompositeTransform,复合变换:

  2.CompositeTransform,复合变换:

    属性:TranslateX,TranslateY,Rotate等

    属性:TranslateX,TranslateY,Rotate等

欲注意的凡,变换是急需一个中心点的,这里UWP提供了有限种植设置中心点的不二法门:

亟需注意的凡,变换是得一个中心点的,这里UWP提供了点儿种设置中心点的办法:

  1.RenderTransformOrigin:

  1.RenderTransformOrigin:

    这个特性也急需换的控件的特性而非RenderTransform的特性,其值为Point(x,y).在控件内的价为0-1,大于1时,变换中心将处控件外还布局之外。

    这个特性也用更换的控件的性能而非RenderTransform的性,其值为Point(x,y).在控件内之值也0-1,大于1时,变换中心以处于控件外还布局之外。

  2.CenterX,CenterY:

  2.CenterX,CenterY:

    设置绝对X轴和Y轴的值,这里吧绝对值如果不互对值。

    设置绝对X轴和Y轴的值,这里也绝对值如果非互对值。

  建议采取前者。在多数动静下,我们并不知道控件的具体大小,而前者采用的凡对立值所以无论是代码量还是计算量都设优惠后者。

  建议利用前者。在大部分状况下,我们并不知道控件的求实尺寸,而前者以的是对立值所以无论是代码量还是计算量都如优化后者。

二、

二、

  三维变换:

  三维变换:

 UIElement.Projection

 UIElement.Projection

  a、PlaneProjection

  a、PlaneProjection

    属性:CenterOfRotationX,CenterOfRotationY,CenterOfRotationZ;
旋转的中心点 P(x,y,z)

    属性:CenterOfRotationX,CenterOfRotationY,CenterOfRotationZ;
旋转的核心点 P(x,y,z)

         GlobalOffsetX,GlobalOffsetY,GlobalOffsetZ;
世界坐标系的活动

         GlobalOffsetX,GlobalOffsetY,GlobalOffsetZ;
世界坐标系的动

         LocalOffsetX,LocalOffsetY,LocalOffsetZ; 局部坐标系

         LocalOffsetX,LocalOffsetY,LocalOffsetZ; 局部坐标系

         RotationX,RotationY,RotationZ; 分别绕X,Y,Z轴的团团转角度

         RotationX,RotationY,RotationZ; 分别绕X,Y,Z轴的转角度

如果无知晓怎么来些许单坐标系,参照 《老三维图形系统中简单种植坐标系之间的坐标变换》。

假使无清楚为什么来个别个坐标系,参照 《其三维图形系统面临有数种坐标系之间的坐标变换》。

  b、Matrix3DProjection

  b、Matrix3DProjection

    Xaml用法:

    Xaml用法:

<Matrix3DProjection  ProjectionMatrix=    "M11,M12,M13, 0,
                                              M21,M22,M23, 0,
                                              M31,M32,M33, 0,
                                               X , Y , Z , 1"/>
<Matrix3DProjection  ProjectionMatrix=    "M11,M12,M13, 0,
                                              M21,M22,M23, 0,
                                              M31,M32,M33, 0,
                                               X , Y , Z , 1"/>

 

 

    和地方二维矩阵变换类似,只是多了一个维度而都:

    和方面二维矩阵变换类似,只是多了一个维度而现已:

矩阵M:

矩阵M:

M11 M12 M13 0
M21 M22 M23 0
M31 M32 M33 0
X  Y Z 1
M11 M12 M13 0
M21 M22 M23 0
M31 M32 M33 0
X  Y Z 1

  设点 p0(x0,y0,z0),则变后底点为:p1=[x0,y0,z0,1]*M

  设点 p0(x0,y0,z0),则易后底点为:p1=[x0,y0,z0,1]*M

    x1=x0*M11+x0*M21+x0*M31+1*X;

    x1=x0*M11+x0*M21+x0*M31+1*X;

    y1=y0*M12+y0*M22+Y0*M32+1*Y;

    y1=y0*M12+y0*M22+Y0*M32+1*Y;

    z1=z0*M13+z0*M23+z0+M33+1*Z;

    z1=z0*M13+z0*M23+z0+M33+1*Z;

  p1(x1,y1,z1).

  p1(x1,y1,z1).

好了,基本讲得了了,如果你说矩阵部分或没看明白,我只能说您确实用学习了。

吓了,基本讲得了了,如果你说矩阵部分要没有看明白,我只得说而真正需要学习了。