2010-05-20 11 views
5

मैं क्षैतिज या लंबवत रेखाओं से भरे एक आयताकार बनाने की कोशिश कर रहा हूं। आयताकार की चौड़ाई गतिशील है इसलिए मैं एक छवि ब्रश का उपयोग नहीं कर सकता। अगर कोई कोई समाधान जानता है तो कृपया मुझे बताएं।डब्ल्यूपीएफ आयताकार क्षैतिज या लंबवत रेखाओं से भरा

उत्तर

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

क्या आपने टाइलब्रश का उपयोग करने का प्रयास किया है?

+0

मुझे सही अगर मैं गलत हूँ, आप सुझाव दे रहे हैं कि मैं एक ImageDrawing का उपयोग करना चाहिए और DrawingBrush TileMode "टाइल" करने के लिए सेट ? – Pravin

+0

भरने के लिए स्ट्रेच सेट करें अन्यथा कुछ भी काम नहीं करेगा क्योंकि यह हमेशा छवि डिफ़ॉल्ट आकार का उपयोग करेगा। –

0

ImageBrushTileBrush से निकला है ताकि आप छवि को दोहराने के लिए Viewport संपत्ति का उपयोग कर सकें। उदाहरण के लिए this MSDN page देखें।

+0

मैं यह देखने में सक्षम नहीं हूं कि यह कैसे काम करेगा, मूल टाइलमोड स्वयं मेरे लिए काम नहीं कर रहा है यहां एक कोड स्निपेट है ... <आयत। भरें> <छविब्रश छवि स्रोत = "सी: \ प्रवीण \ DrawRectangleWithLines \ horizontalLine .जेपीजी "खिंचाव =" कोई नहीं "टाइलमोड =" टाइल "/> – Pravin

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> 

आप नियंत्रण रेखा मोटाई और EndPoint संपत्ति के साथ उन्मुखीकरण।

+0

यह दृष्टिकोण केवल निश्चित आकार के आकार (उपरोक्त मामले में 100x100 आयताकार) के लिए काम करता है। यदि आकार फैल सकता है, तो डैश का आकार भी फैल जाएगा। यह वही नहीं है जो आप आमतौर पर चाहते हैं। –

संबंधित मुद्दे