2010-05-20 14 views

Antwort

11

Ich fand eine direkte Methode, dies zu tun; schließlich habe ich visuelle Pinsel Ressourcen folgende Rechteck mit horizontalen, vertikalen oder punktierte vertikale Linien zu füllen bzw.

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

Haben Sie versucht, einen TileBrush zu verwenden?

+0

mich korrigieren, wenn ich falsch bin, schlagen Sie vor, dass ich eine ImageDrawing und DrawingBrush TileMode auf „Fliese“ verwenden sollten, ? – Pravin

+0

Stellen Sie Stretch auf Fill ein, sonst funktioniert nichts, da immer die Standardgröße des Bildes verwendet wird. –

0

ImageBrush stammt von TileBrush, so können Sie die Viewport Eigenschaft verwenden, um das Bild zu wiederholen. Ein Beispiel finden Sie in this MSDN page.

+0

Ich bin nicht in der Lage zu visualisieren, wie dies funktioniert, der grundlegende TileMode selbst funktioniert nicht für mich hier ist ein Code-Snippet ... Pravin

6

Sie können dies ganz einfach mit einem 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> 

Sie Steuerlinienstärke und Ausrichtung mit der Eigenschaft EndPoint.

+0

Dieser Ansatz funktioniert nur für Formen mit fester Größe (100x100 Rechteck im obigen Fall). Wenn sich die Form dehnen kann, wird die Größe der Striche ebenfalls gedehnt. Das ist normalerweise nicht das, was du willst. –

Verwandte Themen