学Silverlight 2系列(30):使用Transform实现更炫的效果(下)2011-09-10 cnblogs TerryLee本文为使用Transform实现更炫的效果第二部分,在Silverlight中提供了四 种基本变换:旋转变换(RotateTransform )、缩放变换(ScaleTransform)、 倾斜变换(SkewTransform)、移动变换(TranslateTransform)和两种复杂的 变换:变换组(TransformGroup)、矩阵变换(MatrixTransform ),这些变换 可以运用到任何控件或者图形图像。矩阵变换(MatrixTransform )矩阵变换MatrixTransform是所有变换中功能最强大最灵活也是最复杂的一种 变换,如果前面讲解的几种基本变化不能满足我们在实际开发中的需求,可以使 用矩阵变换进行自定义,它允许我们直接对变换矩阵进行操作。在Silverlight中,变换是提供一个3*3的矩阵,我们通过修改矩阵中成员的 值来实现变换,矩阵的定义如下所示:

如修改OffsetX,元素将会在X轴上进行移动;修改OffsetY,元素将在Y轴上 移动;修改M22为2,元素的高度将会拉伸2倍,通过该矩阵,我们能实现前面提 到的几种基本变换的所有功能。更详细的解释大家可以参考SDK。如下面的例子 ,我们使用矩阵变换,仍然能实现前面示例中的变换效果:
<Canvas Background="#CDFCAE">
<Image Source="a1.png" Canvas.Left="120" Canvas.Top="50" Opacity="0.3">
</Image>
<Image Source="a1.png" Canvas.Left="120" Canvas.Top="50" Opacity="0.5">
<Image.RenderTransform>
<MatrixTransform>
<MatrixTransform.Matrix>
<Matrix OffsetX="0" OffsetY="0" M12="0.2"></Matrix>
</MatrixTransform.Matrix>
</MatrixTransform>
</Image.RenderTransform>
</Image>
<Image Source="a1.png" Canvas.Left="120" Canvas.Top="50">
<Image.RenderTransform>
<MatrixTransform>
<MatrixTransform.Matrix>
<Matrix OffsetX="0" OffsetY="0" M12="0.4"></Matrix>
</MatrixTransform.Matrix>
</MatrixTransform>
</Image.RenderTransform>
</Image>
</Canvas>