DrawingBrush用作矩形的填充

时间:2010-02-24 17:56:05

标签: c# wpf

我对DrawingBrush有以下定义。这是我在网上发现的一个箭头:

<DrawingBrush x:Key="arrow" Stretch="Uniform">
  <DrawingBrush.Drawing>
    <DrawingGroup>
      <DrawingGroup.Children>
        <GeometryDrawing Brush="#FFFFFFFF" Geometry="F1 M 358.447,332.449L 358.447,319.664L 380.875,319.664L 380.798,309.408L 407.698,326.505L 381.068,343.628L 380.982,332.45L 358.447,332.449 Z "/>
      </DrawingGroup.Children>
    </DrawingGroup>
  </DrawingBrush.Drawing>
</DrawingBrush>

现在,我在Canvas上创建了一个矩形,并将矩形的Fill属性设置为上面的DrawingBrush:

<Rectangle Fill="{DynamicResource arrow}" Stroke="#FF000000" Width="Auto" Height="Auto" Canvas.Top="339.815" Canvas.Left="112.037" x:Name="arrowRectangle"/>

矩形的宽度和高度设置为“自动”,我希望矩形调整大小以自动显示绘制的箭头。但是,我似乎需要明确设置宽度/高度才能看到任何内容。如果我将宽度/高度保留为自动,矩形将显示为单个点,就像宽度=高度= 0。

似乎我误解了DrawingBrush是如何工作的。我只是在寻找一种显示箭头的方法。我是否必须使用Image而不是DrawingBrush?我首先寻找了一个DrawingBrush,因为我想像箭一样简单,它可以正常工作。

感谢。

1 个答案:

答案 0 :(得分:2)

DrawingBrush只是另一个画笔,它没有布局大小,因此它只会尝试填充调用它的控件区域。所以你不能指望画笔控制矩形大小。 但是您可以使用具有此Geometry的Path作为DataProperty

<Path Fill="Red" Data="F1 M 358.447,332.449L 358.447,319.664L 380.875,319.664L 380.798,309.408L 407.698,326.505L 381.068,343.628L 380.982,332.45L 358.447,332.449 Z " Stretch="Uniform" ...