您可以在 Silverlight 中使用二维 (2-D) Transform 类来旋转、按比例缩放、扭曲和移 动(平移)对象。下面的示例应用了可以旋转和扭曲一行文本的变换。
XAML
<StackPanel>
<TextBlock FontSize="28" Text="Hello">
<TextBlock.RenderTransform>
<TransformGroup>
<RotateTransform Angle="45" />
<SkewTransform CenterX="0" CenterY="0" AngleX="60"/>
</TransformGroup>
</TextBlock.RenderTransform>
</TextBlock>
</StackPanel>
什么是变换?
Transform 定义如何将一个坐标空间中的点映射或变换到另一个坐标空间。此映射由变换 Matrix(一个三行三列的 Double 值集合)来描述。
说明: |
Silverlight 使用行优先矩阵。矢量用行矢量(而不是列矢量)表示。 |
下表显示了 Silverlight 矩阵的结构。
M11 默认值:1.0 |
M12 默认值:0.0 |
0.0 |
M21 默认值:0.0 |
M22 默认值:1.0 |
0.0 |
OffsetX 默认值:0.0 |
OffsetY 默认值:0.0 |
1.0 |
通过处理矩阵值,您可以旋转、按比例缩放、扭曲和移动(平移)对象。例如,如果将第 三行第一列中的值(OffsetX 值)更改为 100,则可以将某一对象沿 x 轴移动 100 个单位 。如果将第二行第二列中的值更改为 3,您可以将某一对象拉伸为其当前高度的三倍。如果 同时更改两个值,则可将对象沿 x 轴移动 100 个单位并将其高度拉伸为原来的 3 倍。由于 Silverlight 仅支持仿射变换,因此右列中的值始终为 0、0、1。
尽管 Silverlight 使您能够直接处理矩阵值,但它还提供了许多 Transform 类,您可以 使用这些类来变换对象,而无需了解基础矩阵结构的配置方式。例如,利用 ScaleTransform 类,您可以通过设置对象的 ScaleX 和 ScaleY 属性来按比例缩放对象,而不用处理变换矩 阵。同样,利用 RotateTransform 类,您只需通过设置对象的 Angle 属性即可旋转对象。