将RelativeTransform与TileBrush一起使用

时间:2013-10-11 12:43:19

标签: wpf

我确实遇到了WPF文档中描述的问题:

http://msdn.microsoft.com/en-us/library/aa970500.aspx

引用:

  

因为瓷砖刷比其他刷更复杂,所以应用了   RelativeTransform to one可能会产生意外结果。对于   例如,请拍摄以下图像。

     

enter image description here

     

以下示例使用ImageBrush绘制矩形区域   与前面的图像。它将RotateTransform应用于   ImageBrush对象的RelativeTransform属性,并设置其Stretch   属性为UniformToFill,应该保留图像的方面   拉伸以完全填充矩形时的比率。

<Rectangle Width="200" Height="100" Stroke="Black" StrokeThickness="1">
  <Rectangle.Fill>
    <ImageBrush Stretch="UniformToFill">
      <ImageBrush.ImageSource>
        <BitmapImage UriSource="sampleImages\square.jpg" />
      </ImageBrush.ImageSource>
      <ImageBrush.RelativeTransform>
        <RotateTransform CenterX="0.5" CenterY="0.5" Angle="90" />
      </ImageBrush.RelativeTransform>
    </ImageBrush>
  </Rectangle.Fill>
</Rectangle>
     

此示例生成以下输出:

     

enter image description here

     

请注意,即使画笔的拉伸,图像也会失真   被设置为UniformToFill。那是因为相对变换是   在画笔的Viewbox映射到其视口后应用。

有没有人知道解决这个问题的伎俩?

1 个答案:

答案 0 :(得分:0)

我找到了一个解决方案,即使用TransformedBitmap将旋转应用到管道开头的图像。