【WP7】坐标变换
在应用开发的过程中,有时需要使用到坐标变换(平移,旋转,缩放,三维变换等),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;