2012-05-23 15 views
6

का उपयोग कर ग्रिड पृष्ठभूमि छवि Grid पर पृष्ठभूमि लागू करने के लिए मैं XAML में ImageBrush का उपयोग करना चाहता हूं।छवि ब्रश

मैंने ब्रश को x:Key दिया है और इसे मेरे ग्रिड में संदर्भित करना चाहता हूं।

अफसोस की बात है, यह छवि के साथ पृष्ठभूमि के साथ बिल्कुल नहीं आती है।

<Window.Resources> 
    <ImageBrush ImageSource="/MAQButtonTest;component/images/bird_text_bg.jpg" x:Key="BackgroundSponge" /> 
    <Style TargetType="TextBlock"> 
     <Setter Property="OverridesDefaultStyle" Value="True"/> 
    </Style> 
    <ControlTemplate TargetType="Button" x:Key="ButtonTemplate"> 
     <Grid Width="444" ShowGridLines="False" SnapsToDevicePixels="True" Background="{DynamicResource BackgroundSponge}"> 
      <Grid.RowDefinitions> 
       <RowDefinition Height="51" /> 
       <RowDefinition Height="36" /> 
      </Grid.RowDefinitions> 
      <Grid Grid.Row="0" Background="#286c97"> 

      </Grid> 
      <Grid Grid.Row="1" Background="#5898c0"> 
       <ContentPresenter Grid.Row="0" /> 
      </Grid> 
     </Grid> 
    </ControlTemplate> 
</Window.Resources> 

मुझे लगता है कि मैं शायद गलत तरीके से की चर्चा करते हुए कर रहा हूँ, मैं DynamicResource और StaticResource कोशिश की है।

+0

कैसे आप इस परियोजना में अपनी पृष्ठभूमि छवि शामिल कर रहे हैं? यदि इसे 'सामग्री' के रूप में शामिल किया गया है तो मुझे उम्मीद है कि आपके इमेजसोर्स को इस तरह और अधिक दिखने की उम्मीद है: 'ImageSource =" pack: // application: ,,,/घटक/छवियों/bird_text_bg.jpg "' – paul

+1

यदि आप इसे सीधे निर्दिष्ट करते हैं (संसाधन का उपयोग करने के बजाए) क्या यह दिखाता है? – Tim

+0

यह अजीब चीज है। मैंने इसे सामग्री पर सेट किया है और विजुअल स्टूडियो में छवियां हैं। मैंने प्रॉपर्टी फलक में "इमेजसोर्स" के लिए विजुअल स्टूडियो के भीतर इलिप्स बटन का उपयोग किया और फिर यह मेरे लिए उस पथ को स्वचालित रूप से जेनरेट कर दिया। – Luke

उत्तर

2

आपका मुख्य ग्रिड में आप भीतरी बच्चे जो कवर सभी बाहरी ग्रिड के उपलब्ध स्थान thats क्यों आप अभ्यस्त पृष्ठभूमि देखने में सक्षम होना है।

<Grid Width="444" 
      Height="500" 
      Background="{DynamicResource BackgroundSponge}" 
      ShowGridLines="False" 
      SnapsToDevicePixels="True"> 
     <Grid.RowDefinitions> 
      <RowDefinition Height="51" /> 
      <RowDefinition Height="36" /> 
     </Grid.RowDefinitions> 
     <Grid Grid.Row="0" Background="#286c97" Opacity="0.2" Margin="5"/> 
     <Grid Grid.Row="1" Background="#5898c0" Opacity="0.2" Margin="5"> 
      <ContentPresenter Grid.Row="0" /> 
     </Grid> 
    </Grid> 

केवल चौड़ाई है जो ठीक है लेकिन ऊंचाई के बारे में क्या है। यदि आप बस ऊंचाई बढ़ाते हैं तो आपके बच्चे के सामान दिखाई देंगे।

या बेहतर बच्चों के अंदर मार्जिन होना बेहतर है।

मार्जिन = "5"

या भीतरी बच्चे

अस्पष्टता = की तरह पारदर्शी बनाने के "0.2"

+0

धन्यवाद! मैं पागल हो रहा था :) – Luke

+0

क्या वे एक पूर्ण पथ का उपयोग कर मेरे हार्डड्राइव पर एक छवि है जब वे स्वचालित रूप से निर्यात हो जाते हैं? – BlueWizard

+0

कोई बाहरी संसाधन निर्यात नहीं किया जाता है क्योंकि वे आंतरिक ऑब्जेक्ट पेड़ में मौजूद नहीं हैं। – JSJ

3

मैंने हमेशा ऐसा किया;

<Grid> 
    <Grid.Background> 
     <ImageBrush ImageSource="/Resources/Images/BG_BlankOptimized.png"/> 
    </Grid.Background> 
</Grid> 

या अधिक क्या पॉल StaticResource का उपयोग कर उस शैली को फोन करने का सुझाव दिया है की तरह एक एक छवि पथ का उपयोग कर एक imagebrush संसाधन द्वारा यह बुला सकते हैं।

9

मैं इसका सामान्य रूप से उपयोग करता हूं। यदि छवियों को संसाधन के रूप में प्रोजेक्ट में जोड़ा जाता है, तो उन्हें अपेक्षाकृत संदर्भित करें।

<ImageBrush x:Key="play" ImageSource="../Images/Buttons/Play.png" /> 

और फिर छवि ब्रश संदर्भ:

<Border Background="{StaticResource play}"/> 
+0

मैं जोड़ूंगा कि मेरे लिए सबसे महत्वपूर्ण हिस्सा हिस्सा था "अगर छवियों को संसाधन के रूप में प्रोजेक्ट में जोड़ा जाता है", क्योंकि मेरे मामले में वे सामग्री के रूप में थे और इसलिए मुझे कोई समस्या थी। धन्यवाद! – Nikola

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