我对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>


现在,我在画布上创建了一个矩形,并将矩形的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的工作方式。我只是在寻找一种显示箭头的方法。我必须使用图像而不是DrawingBrush吗?我首先寻找了DrawingBrush,因为我认为使用箭头这样的简单工具就可以正常工作。

谢谢。

最佳答案

DrawingBrush只是另一种没有布局大小的画笔,因此它将仅尝试填充被调用的控件区域。因此,您不能指望画笔能控制Rectangle的大小。
但是您可以将具有此几何的路径用作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" ...

关于c# - DrawingBrush用作矩形的填充,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2328242/

10-12 05:51