2010-05-20 169 views
5

我正在嘗試創建一個填充了水平線或垂直線的矩形。 矩形的寬度是動態的,所以我不能使用圖像畫筆。 如果有人知道任何解決方案,請讓我知道。WPF填充水平線或垂直線的矩形

回答

11

我想出了一個簡單的方法,最後,我用下面的視覺刷資源來填充矩形水平,垂直或垂直虛線分別

<!--for horizontal lines-->  
    <VisualBrush 
       x:Key="HorizontalLines" 
       TileMode="Tile" Viewport="0,0,4,4" 
       ViewportUnits="Absolute" Viewbox="0,0,10,10"  
       ViewboxUnits="Absolute"> 
      <VisualBrush.Visual> 
       <Canvas> 
        <Path Stroke="Black" Data="M 0 10 l 10 0" /> 
       </Canvas> 
      </VisualBrush.Visual> 
     </VisualBrush> 

     <!--For vertical lines--> 
     <VisualBrush 
       x:Key="VerticalLines" 
       TileMode="Tile" Viewport="0,0,4,4" 
       ViewportUnits="Absolute" Viewbox="0,0,10,10"  
       ViewboxUnits="Absolute"> 
      <VisualBrush.Visual> 
       <Canvas >    
        <Path Stroke="Black" Data="M 0 0 l 0 10" />       
       </Canvas> 
      </VisualBrush.Visual> 
     </VisualBrush> 


     <!--For dotted vertical lines--> 
     <VisualBrush 
       x:Key="DottedVerticalLinesWithFill" 
       TileMode="Tile" Viewport="0,0,10,10" 
       ViewportUnits="Absolute" Viewbox="0,0,10,10"  
       ViewboxUnits="Absolute"> 
      <VisualBrush.Visual> 
       <Canvas> 
        <Path Stroke="Purple" Data="M 0 5l 0 -10" /> 
       </Canvas> 
      </VisualBrush.Visual> 
     </VisualBrush> 
0

您是否嘗試過使用TileBrush?

+0

糾正我,如果我錯了,你是說我應該使用ImageDrawing和DrawingBrush TILEMODE設置爲「磚」 ? – Pravin 2010-05-20 15:44:44

+0

將拉伸設置爲填充,否則無法使用,因爲它將始終使用圖像的默認尺寸。 – 2010-05-20 18:31:02

0

ImageBrush派生自TileBrush因此您可以使用Viewport屬性重複圖像。一個例子見this MSDN page

+0

我無法想象這將如何工作,基本TileMode本身並不適合我這裏是一個代碼片段... Pravin 2010-05-20 16:01:08

6

您可以輕鬆地用一個LinearGradientBrush做到這一點:

<Rectangle Width="100" Height="100"> 
    <Rectangle.Fill> 
     <LinearGradientBrush SpreadMethod="Reflect" StartPoint="0 0" EndPoint="0 0.05"> 
      <GradientStop Offset="0.5" Color="Black"/> 
      <GradientStop Offset="0.5" Color="White"/> 
     </LinearGradientBrush> 
    </Rectangle.Fill> 
    </Rectangle> 

您控制線的厚度和方向與端點屬性。

+0

此方法僅適用於固定尺寸的形狀(上例爲100x100矩形)。如果形狀可以伸展,那麼破折號的大小也會伸展。這通常不是你想要的。 – 2017-07-31 12:19:45