在WPF中创建条纹画笔

时间:2012-08-03 17:14:31

标签: wpf brush

如何为条纹创建画笔(DrawingBrush),如博客中所示:

http://blog.pixelingene.com/2008/09/quick-tip-to-get-a-striped-background/

我无法使用它,因为它使用了缩放变换,这意味着如果UI元素很小,条纹几乎不可见或太靠近。

我不能使用图像画笔,因为我需要绑定颜色。

2 个答案:

答案 0 :(得分:14)

只需使用MappingMode ="绝对":

<LinearGradientBrush MappingMode="Absolute" x:Key="HatchBrush"  StartPoint="0,0" EndPoint="4,4" SpreadMethod="Repeat">
  <GradientStop Offset="0" Color="LightCoral"/>
  <GradientStop Offset="0.75" Color="LightCoral"/>
  <GradientStop Offset="0.75" Color="Gray"/>
  <GradientStop Offset="1" Color="Gray"/>
</LinearGradientBrush>

答案 1 :(得分:13)

创建向下45度角的条纹图案。 更改视口以更改条纹的大小

<DrawingBrush Stretch="UniformToFill" ViewportUnits="Absolute" Viewport="0,0,10,10" TileMode="Tile">
    <DrawingBrush.Drawing>
        <DrawingGroup>
            <DrawingGroup.Children>
                <GeometryDrawing Brush="Black">
                    <GeometryDrawing.Geometry>
                        <GeometryGroup FillRule="Nonzero">
                            <PathGeometry>
                                <PathFigure StartPoint="0,0">
                                    <LineSegment  Point="100,0"/>
                                    <LineSegment  Point="100,100"/>
                                    <LineSegment  Point="0,100"/>
                                </PathFigure>
                            </PathGeometry>
                        </GeometryGroup>
                    </GeometryDrawing.Geometry>
                </GeometryDrawing>
                <GeometryDrawing Brush="#FF404040">
                    <GeometryDrawing.Geometry>
                        <GeometryGroup FillRule="Nonzero">
                            <PathGeometry>
                                <PathFigure StartPoint="0,0">
                                    <LineSegment  Point="25,0"/>
                                    <LineSegment  Point="100,75"/>
                                    <LineSegment  Point="100,100"/>
                                    <LineSegment  Point="75,100"/>
                                    <LineSegment  Point="0,25"/>
                                    <LineSegment  Point="0,0"/>
                                </PathFigure>
                                <PathFigure StartPoint="75,0">
                                    <LineSegment  Point="100,25"/>
                                    <LineSegment  Point="100,0"/>
                                </PathFigure>
                                <PathFigure StartPoint="0,75">
                                    <LineSegment  Point="25,100"/>
                                    <LineSegment  Point="0,100"/>
                                </PathFigure>
                            </PathGeometry>
                        </GeometryGroup>
                    </GeometryDrawing.Geometry>
                </GeometryDrawing>
            </DrawingGroup.Children>
        </DrawingGroup>
    </DrawingBrush.Drawing>
</DrawingBrush>

或者,您可以使用多重绑定将缩放变换绑定到控件的高度和宽度。然后使用转换器,将刻度更改为高度或宽度的最大值,然后条纹将保持相同的大小。