如何:旋转对象

更新:2007 年 11 月

此示例演示如何旋转对象。此示例首先创建一个 RotateTransform,然后以角度为单位指定了其 Angle

下面的示例以 Polyline 对象的左上角为旋转点将其旋转了 45 度。

示例

<Canvas Height="200" Width="200">

  <!-- Rotates the Polyline 45 degrees about the point (0,0). -->
  <Polyline Points="25,25 0,50 25,75 50,50 25,25 25,0" 
    Stroke="Blue" StrokeThickness="10"
    Canvas.Left="75" Canvas.Top="50">
    <Polyline.RenderTransform>
      <RotateTransform CenterX="0" CenterY="0" Angle="45" />
    </Polyline.RenderTransform>
  </Polyline>
</Canvas>
// Create a Polyline.
Polyline polyline1 = new Polyline();
polyline1.Points.Add(new Point(25, 25));
polyline1.Points.Add(new Point(0, 50));
polyline1.Points.Add(new Point(25, 75));
polyline1.Points.Add(new Point(50, 50));
polyline1.Points.Add(new Point(25, 25));
polyline1.Points.Add(new Point(25, 0));
polyline1.Stroke = Brushes.Blue;
polyline1.StrokeThickness = 10;

// Create a RotateTransform to rotate
// the Polyline 45 degrees about its
// top-left corner.
RotateTransform rotateTransform1 =
    new RotateTransform(45);
polyline1.RenderTransform = rotateTransform1;

// Create a Canvas to contain the Polyline.
Canvas canvas1 = new Canvas();
canvas1.Width = 200;
canvas1.Height = 200;
Canvas.SetLeft(polyline1, 75);
Canvas.SetTop(polyline1, 50);
canvas1.Children.Add(polyline1);

RotateTransformCenterXCenterY 属性指定了对象的旋转点。此中心点以变换的元素的坐标空间来表示。默认情况下,将围绕着要变换的对象的左上角 (0,0) 进行旋转。

下一个示例围绕点 (25,50) 沿顺时针方向将 Polyline 对象旋转了 45 度。

<Canvas Height="200" Width="200">

  <!-- Rotates the Polyline 45 degrees about the point (25,50). -->
  <Polyline Points="25,25 0,50 25,75 50,50 25,25 25,0" 
    Stroke="Blue" StrokeThickness="10"
    Canvas.Left="75" Canvas.Top="50">
    <Polyline.RenderTransform>
      <RotateTransform CenterX="25" CenterY="50" Angle="45" />
    </Polyline.RenderTransform>
  </Polyline>
</Canvas>
// Create a Polyline.
Polyline polyline2 = new Polyline();
polyline2.Points = polyline1.Points;
polyline2.Stroke = Brushes.Blue;
polyline2.StrokeThickness = 10;

// Create a RotateTransform to rotate
// the Polyline 45 degrees about the
// point (25,50).
RotateTransform rotateTransform2 =
    new RotateTransform(45);
rotateTransform2.CenterX = 25;
rotateTransform2.CenterY = 50;
polyline2.RenderTransform = rotateTransform2;

// Create a Canvas to contain the Polyline.
Canvas canvas2 = new Canvas();
canvas2.Width = 200;
canvas2.Height = 200;
Canvas.SetLeft(polyline2, 75);
Canvas.SetTop(polyline2, 50);
canvas2.Children.Add(polyline2);

下图显示了对这两个对象应用 Transform 后的结果。

两个对象从不同的旋转中心旋转了 45 度

以不同中心点进行的 45 度旋转

前面示例中的 PolylineUIElement。对 UIElementRenderTransform 属性应用 Transform 时,可以使用 RenderTransformOrigin 属性指定对元素应用的每个 Transform 的原点。因为 RenderTransformOrigin 属性使用相对坐标,所以即使不知道元素的尺寸,也仍然可以对元素中心应用变换。有关更多信息及示例,请参见如何:使用相对值指定变换原点

有关完整示例,请参见 二维转换示例

请参见

概念

变换概述

参考

Transform

其他资源

变换帮助主题