在应用开发的过程中,有时需要使用到坐标变换(平移,旋转,缩放,三维变换等),WP7提供了一下几种坐标变换的方式
TranslateTransform 平移
RotateTransform 旋转
ScaleTransform 缩放
SkewTransform 倾斜
CompositeTransform 组合变换
TranformGroup 变换组
MatriTransform 矩阵变换
看例子再解释
<Image Source="img.png" Height="291" HorizontalAlignment="Left" Margin="-523,-89,0,0" Name="image1" Stretch="Fill" VerticalAlignment="Top" Width="313" >
<Image.RenderTransform>
<TransformGroup>
<TranslateTransform X="100" Y="100" />
<RotateTransform Angle="5" />
<ScaleTransform CenterX="180" CenterY="0" ScaleX="0.5" ScaleY="1"/>
<SkewTransform AngleX="10" CenterY="10" CenterX="0" CenterY="90" />
<CompositeTransform CenterX="250" CenterY="185"
Rotation="45"
SkewX="15" SkewY="15"
ScaleX="1.2" ScaleY="1.2"
TranslateX="230" TranslateY="200"/>
<MatrixTransform Matrix="2,0,0,1,12,6"/>
</TransformGroup>
</Image.RenderTransform>
</Image>
首先定义一个Image控件,在Image里面定义RenderTransform (只能包含一种变换,如果需要使用多种变换,可以使用TransformGroup )
其他应该一看就懂,没什么好解释的,不懂多试几次就会明白,下面介绍一下MatrixTransform
这是最复杂的一种变换,它是一个3乘3的矩阵,但是,由于它第3列为0,0,1,所以,其实我们只需设置6个值就够了。它们分别是:
m11 m12 0
m21 m22 0
offsetX offsetY 1
m11 ——X轴缩放
m12 ——Y轴上倾斜
m21 ——X轴上倾斜
m22——Y轴缩放
offsetX ——X轴上的位移
offsetY ——Y轴上的位移
<MatrixTransform Matrix="2,0,0,1,12,6"/>
表示:X轴放大两倍,Y轴不变,在X轴方向平移12,Y轴方向平移6,无倾斜
最后是三维变换,直接看例子和截图
<Image Source="img.png" Stretch="Uniform" HorizontalAlignment="Center" VerticalAlignment="Center" Width="320">
<Image.Projection>
<PlaneProjection RotationY="45" />
</Image.Projection>
</Image>
为了更好的看出效果,这里只设置了Y轴旋转,也可以设置RotationX,RotationZ,大家自己试吧
最后,还有C#代码中控制坐标变换的,首先在控件定义时添加RenderTransform
<Rectangle Height="100" HorizontalAlignment="Left" Margin="91,46,0,0" Name="rectangle1" Stroke="Black" StrokeThickness="1" VerticalAlignment="Top" Width="200" Fill="Red">
<Rectangle.RenderTransform>
<TranslateTransform/>
</Rectangle.RenderTransform>
</Rectangle>
在代码中访问该变换,设置平移变换的X值为200
TranslateTransform translate = (TranslateTransform)this.rectangle1.RenderTransform;
translate.X = 200;