在應用開發的過程中,有時需要使用到坐标變換(平移,旋轉,縮放,三維變換等),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;