0

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

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

去引用:

由于平铺画笔比其他画笔更复杂,因此将 RelativeTransform 应用于其中可能会产生意想不到的结果。例如,取下面的图像。

在此处输入图像描述

下面的示例使用 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>

此示例产生以下输出:

在此处输入图像描述

请注意,即使画笔的 Stretch 设置为 UniformToFill,图像也会变形。这是因为相对变换是在画笔的 Viewbox 映射到其 Viewport 之后应用的。

有谁知道解决这个问题的技巧?

4

1 回答 1

0

我找到了一个解决方案,即TransformedBitmap在管道开始时使用 a 将旋转应用于图像。

于 2013-10-19T15:05:27.733 回答