我遇到了 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 之后应用的。
有谁知道解决这个问题的技巧?