2010-05-20 19 views

Respuesta

11

Descubrí una manera directa de hacerlo; Por último, he utilizado siguiendo recursos visuales del cepillo para llenar rectángulo con líneas verticales horizontales, verticales o de puntos, respectivamente

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

¿Has probado con un TileBrush?

+0

Corrígeme si estoy equivocado, está sugiriendo que debería utilizar un ImageDrawing y DrawingBrush TILEMODE listo para "Teja" ? – Pravin

+0

Establecer estiramiento para rellenar, de lo contrario, nada funcionará, ya que siempre utilizará el tamaño predeterminado de la imagen. –

0

ImageBrush deriva de TileBrush por lo que puede utilizar la propiedad Viewport para repetir la imagen. Ver this MSDN page para un ejemplo.

+0

no soy capaz de visualizar cómo va a funcionar, el propio TILEMODE básica no está funcionando para mí aquí es un fragmento de código ... Pravin

6

Usted puede hacer esto con 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> 

Usted grosor de la línea de control y orientación con la propiedad de punto final.

+0

Este enfoque solo funciona para formas de tamaño fijo (rectángulo de 100x100 en el caso anterior). Si la forma se puede estirar, entonces el tamaño de los guiones se estirará también. Eso no es lo que quieres generalmente. –

Cuestiones relacionadas