如何在cs中设置绘图的填充属性?

时间:2016-03-29 21:23:19

标签: c# xaml

我只是想知道是否有办法从cs文件设置绘图的Fill属性?我有一个画笔如下: -

if (resourceObject is DrawingBrush)
{
    DrawingBrush iconBrush = resourceObject as DrawingBrush;
    //Is there a way to set fill property in iconBrush.Drawing
    // e.g iconBrush.Drawing.setValue(Fill, "Gray");
    DrawingImage image = new DrawingImage(iconBrush.Drawing);
    resourceObject = image;
}

如果没有,你能否建议我这样做的其他方法?这是绘图画笔的代码: -

<DrawingBrush x:Key="ML_ICON">
<DrawingBrush.Drawing>
  <DrawingGroup>
    <GeometryDrawing Brush="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType=uiEntityViews:CanvasLinkConnectionPointBaseView}, Path=MeSiteColor}" Geometry="F1 M0,25 L25,50, 50,25 25,0z">
      <GeometryDrawing.Pen>
        <Pen DashCap="Triangle" EndLineCap="Flat" LineJoin="Bevel" MiterLimit="10" StartLineCap="Flat" Thickness="5">
          <Pen.Brush>
            <LinearGradientBrush>
              <GradientStop Color="#FF657783" Offset="0"/>
              <GradientStop Color="White" Offset="0.5"/>
              <GradientStop Color="#FF2C4758" Offset="1"/>
            </LinearGradientBrush>
          </Pen.Brush>
          <Pen.DashStyle>
            <DashStyle/>
          </Pen.DashStyle>
        </Pen>
      </GeometryDrawing.Pen>
    </GeometryDrawing>
  </DrawingGroup>
</DrawingBrush.Drawing>
</DrawingBrush>

2 个答案:

答案 0 :(得分:0)

DrawingBrush使用某种图像来填充它所应用的形状。因此,设置单独的填充值没有多大意义,因为它是不可见的。

我假设您正在使用具有某种透明度的图像,因此您希望透明部分以某种颜色显示?

我可以想到两种方法:

  1. 使用所需颜色的SolidColorBrush在使用DrawingBrush的形状后面具有相同的形状。
  2. 将彩色矩形渲染为WritableBitmap,然后渲染实际想要使用的Image。然后使用WritableBitmap作为DrawingBrush的源。
  3. 一般情况下,我会选择第二个 - 因为它只需要绘制一次背景。

答案 1 :(得分:0)

有不同类型的画笔 es:实心,渐变,图像...... 对于 SolidColorBrush ,它将颜色作为构造函数中的参数。

SolidColorBrush myBrush = new SolidColorBrush(Colors.Red);

以下是完整的规范WPF Brushes Overview