博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

TransformGroup变换组

Posted on 2009-10-28 13:57  157311572  阅读(1195)  评论(0)    收藏  举报

在很多场景中,不仅会用到前面介绍的某一种简单变换对象,而是希望能够同时运用多个变换对象,这就要用到TransformGroup变换组对象,它可以组合多个变换对象在一起,从而让作用的元素一次产生多种变形效果。

在XAML中声明将在TransformGroup中进行的变换,须要声明一个或多个变换作为对象元素,按照TransformGroup子元素的顺序排列这些元素,并且允许嵌套多个TransformGroup。添加到TransformGroup中的变化对象,可以是RotateTransform、ScaleTransform、SkewTransform、TranslateTransform、MatrixTransform或TransformGroup。如下面的示例代码所示:

XAML
<Canvas x:Name="LayoutRoot" Background="White">
<TextBlock Text="欢迎进入Silverlight世界"
Canvas.Top="30" Canvas.Left="30"
Opacity="0.5">
</TextBlock>
<TextBlock Text="欢迎进入Silverlight世界"
Canvas.Top="30" Canvas.Left="30"
Foreground="OrangeRed">
<TextBlock.RenderTransform>
<TransformGroup>
<SkewTransform AngleX="45" AngleY="0"/>
<TranslateTransform X="5" Y="5"/>
<RotateTransform Angle="15"/>
</TransformGroup>
</TextBlock.RenderTransform>
</TextBlock>
</Canvas>
运行效果如图10-10所示。
 
(点击查看大图)图10-10

在变换组中,单个变换对象的顺序特别重要。例如,依次旋转、缩放和平移与依次平移、旋转和缩放得到的结果将不同。造成顺序的很重要一个原因就是,如旋转和缩放是针对坐标系的原点进行的,缩放以原点为中心的对象与缩放已离开原点的对象所得到的结果不同。同样,旋转以原点为中心的对象与旋转已离开原点的对象所得到的结果也不同。