2010-05-20 6 views

Répondre

11

J'ai trouvé une façon simple de faire cela; enfin, je suivant les ressources de brosse visuels rectangle remplir avec des lignes verticales horizontales, verticales ou en pointillés respectivement

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

Avez-vous essayé d'utiliser un TileBrush?

+0

-moi si je me trompe, vous suggérez que je devrais utiliser un ImageDessin et DrawingBrush TileMode réglé sur « tuile » ? – Pravin

+0

Définissez Stretch to Fill sinon rien ne fonctionnera car il utilisera toujours la taille par défaut de l'image. –

0

ImageBrush dérive de TileBrush afin que vous puissiez utiliser la propriété Viewport pour répéter l'image. Voir this MSDN page pour un exemple.

+0

Je ne suis pas en mesure de visualiser comment cela fonctionnera, le TileMode de base lui-même ne fonctionne pas pour moi ici est un extrait de code ... Pravin

6

Vous pouvez facilement faire cela avec un 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> 

Vous épaisseur de la ligne de commande et d'orientation avec la propriété EndPoint.

+0

Cette approche ne fonctionne que pour les formes de taille fixe (rectangle 100x100 dans le cas ci-dessus). Si la forme peut s'étirer, la taille des tirets s'étendra également. Ce n'est pas ce que tu veux habituellement. –

Questions connexes