如何:变换画笔

更新:2007 年 11 月

此示例演示如何使用 Brush 对象的两个变换属性 RelativeTransformTransform 来变换这些对象。

下面的示例使用 RotateTransformImageBrush 的内容旋转 45 度。

下图显示了以下三种情况下的 ImageBrush:无 RotateTransform、对 RelativeTransform 属性应用了 RotateTransform 以及对 Transform 属性应用了 RotateTransform

画笔的 RelativeTransform 和 Transform 设置

示例

第一个示例将 RotateTransform 应用于 ImageBrushRelativeTransform 属性。RotateTransform 对象的 CenterXCenterY 属性都被设置为 0.5,这是此内容的中心点的相对坐标。因此,ImageBrush 内容将围绕其中心旋转。

//
// Create an ImageBrush with a relative transform and
// use it to paint a rectangle.
//
ImageBrush relativeTransformImageBrush = new ImageBrush();
relativeTransformImageBrush.ImageSource =
    new BitmapImage(new Uri(@"sampleImages\pinkcherries.jpg", UriKind.Relative));

// Create a 45 rotate transform about the brush's center
// and apply it to the brush's RelativeTransform property.
RotateTransform aRotateTransform = new RotateTransform();
aRotateTransform.CenterX = 0.5; 
aRotateTransform.CenterY = 0.5;
aRotateTransform.Angle = 45;
relativeTransformImageBrush.RelativeTransform = aRotateTransform;

// Use the brush to paint a rectangle.
Rectangle relativeTransformImageBrushRectangle = new Rectangle();
relativeTransformImageBrushRectangle.Width = 175;
relativeTransformImageBrushRectangle.Height = 90;
relativeTransformImageBrushRectangle.Stroke = Brushes.Black;
relativeTransformImageBrushRectangle.Fill = relativeTransformImageBrush;

<Rectangle Width="175" Height="90" Stroke="Black">
  <Rectangle.Fill>
    <ImageBrush ImageSource="sampleImages\pinkcherries.jpg">
      <ImageBrush.RelativeTransform>
        <RotateTransform CenterX="0.5" CenterY="0.5" Angle="45" />
      </ImageBrush.RelativeTransform>
    </ImageBrush>
  </Rectangle.Fill>
</Rectangle>

第二个示例也将 RotateTransform 应用于 ImageBrush;但是,此示例使用 Transform 属性,而不是使用 RelativeTransform 属性。

为了使画笔围绕其中心旋转,此示例将 RotateTransform 对象的 CenterXCenterY 属性设置为绝对坐标。因为画笔绘制了一个 175 x 90 像素的矩形,所以此矩形的中心点坐标为 (87.5, 45)。

//
// Create an ImageBrush with a transform and
// use it to paint a rectangle.
//
ImageBrush transformImageBrush = new ImageBrush();
transformImageBrush.ImageSource =
    new BitmapImage(new Uri(@"sampleImages\pinkcherries.jpg", UriKind.Relative));

// Create a 45 rotate transform about the brush's center
// and apply it to the brush's Transform property.
RotateTransform anotherRotateTransform = new RotateTransform();
anotherRotateTransform.CenterX = 87.5;
anotherRotateTransform.CenterY = 45;
anotherRotateTransform.Angle = 45;
transformImageBrush.Transform = anotherRotateTransform;

// Use the brush to paint a rectangle.
Rectangle transformImageBrushRectangle = new Rectangle();
transformImageBrushRectangle.Width = 175;
transformImageBrushRectangle.Height = 90;
transformImageBrushRectangle.Stroke = Brushes.Black;
transformImageBrushRectangle.Fill = transformImageBrush;

<Rectangle Width="175" Height="90" Stroke="Black">
  <Rectangle.Fill>
    <ImageBrush ImageSource="sampleImages\pinkcherries.jpg">
      <ImageBrush.Transform>
        <RotateTransform CenterX="87.5" CenterY="45" Angle="45" />
      </ImageBrush.Transform>
    </ImageBrush>
  </Rectangle.Fill>
</Rectangle>

有关 RelativeTransformTransform 属性的工作原理的说明,请参见Brush 变换概述

有关完整示例,请参见 Brush 示例。有关画笔的更多信息,请参见使用纯色和渐变进行绘制概述

请参见

概念

Brush 变换概述

使用纯色和渐变进行绘制概述

变换概述