2012-08-03 38 views
12

Làm thế nào tôi có thể tạo ra một bàn chải (DrawingBrush) cho sọc như trong blog:Tạo bàn chải sọc trong WPF

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

Tôi không thể sử dụng nó vì nó sử dụng quy mô biến đổi, có nghĩa là nếu Phần tử giao diện người dùng nhỏ, các sọc khá nhiều không thể nhìn thấy hoặc quá gần nhau.

Tôi không thể sử dụng cọ vẽ hình ảnh vì tôi cần phải liên kết màu.

Trả lời

12

Tạo ra mô hình sọc góc 45 độ. Alter viewport để thay đổi kích thước của sọc

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

Hoặc bạn có thể ràng buộc quy mô chuyển đổi để chiều cao và chiều rộng của việc kiểm soát sử dụng multibinding. Sau đó, với bộ chuyển đổi, bạn thay đổi tỷ lệ thành chiều cao hoặc chiều rộng tối đa, sau đó các sọc sẽ giữ nguyên kích thước.

11

Chỉ cần sử dụng MappingMode = "Absolute":

<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> 
Các vấn đề liên quan