更新:2007 年 11 月
此示例演示如何使用 Brush 对象的两个变换属性 RelativeTransform 和 Transform 来变换这些对象。
下面的示例使用 RotateTransform 将 ImageBrush 的内容旋转 45 度。
下图显示了以下三种情况下的 ImageBrush:无 RotateTransform、对 RelativeTransform 属性应用了 RotateTransform 以及对 Transform 属性应用了 RotateTransform。
示例
第一个示例将 RotateTransform 应用于 ImageBrush 的 RelativeTransform 属性。RotateTransform 对象的 CenterX 和 CenterY 属性都被设置为 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 对象的 CenterX 和 CenterY 属性设置为绝对坐标。因为画笔绘制了一个 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>
有关 RelativeTransform 和 Transform 属性的工作原理的说明,请参见Brush 变换概述。
有关完整示例,请参见 Brush 示例。有关画笔的更多信息,请参见使用纯色和渐变进行绘制概述。