2011-04-05 14 views
61

मैं WPF के लिए बहुत नया हूं। मैंने एक विंडो पर एक छवि नियंत्रण रखा है और मैं छवि को नियंत्रण में एक छवि पर सेट करना चाहता हूं जो "Resources.resx" नामक प्रोजेक्ट संसाधन फ़ाइल में संग्रहीत है। संसाधन फ़ाइल में छवि का नाम 'खोज' है। क्या कोई मुझे दिखा सकता है कि मैं ऐसा करने के बारे में कैसे जा सकता हूं?एक्सएएमएल में छवि संसाधनों का संदर्भ कैसे लें?

उत्तर

91

यदि चित्र आपकी संसाधनों फ़ोल्डर में है और इसके निर्माण कार्रवाई संसाधन के लिए सेट है: यह एक ही तरीका है मुझे लगता है ये संसाधन के दृष्टिकोण से विशुद्ध रूप से कर सकता है और कोई प्रोजेक्ट फ़ाइलें है। आप XAML में चित्र को संदर्भित इस प्रकार कर सकते हैं:

"pack://application:,,,/Resources/Search.png" 

मान लिया जाये कि आप संसाधन फ़ोल्डर के अंतर्गत किसी भी फ़ोल्डर संरचना की जरूरत नहीं है और यह एक आवेदन है। उदाहरण के लिए मैं उपयोग करता हूं:

ImageSource="pack://application:,,,/Resources/RibbonImages/CloseButton.png" 

जब मेरे पास संसाधन फ़ोल्डर के तहत रिबन इमेज नामक एक फ़ोल्डर है।

+0

'पैक' नामस्थान का प्रतिनिधित्व क्या करता है? – Hosea146

+2

यहां पैक यूरी के बारे में जानकारी है: http://msdn.microsoft.com/en-us/library/aa970069(v=VS.90).aspx#The_Pack_URI_Scheme – Viv

+2

यह थोड़ी देर के बाद से मैंने अपने आवेदन में छवियां जोड़ दीं .. मैं यहां पर चिंतित हो सकता हूं लेकिन मुझे लगता है कि WPF डिजाइनर में छवि दिखाने से पहले आपको अपना एप्लिकेशन बनाना पड़ सकता है। – Viv

-2

पहले से ही चर्चा, लगता है एक उदाहरण है जैसे आप here

तुम भी, एक नज़र here ले जा सकते हैं के लिए आप क्या संभव है पर एक गहरी समझ हो सकता है जहां।

+3

धन्यवाद लेकिन कुछ भी मुझे लगता है कि लेख में देखा था मुझे कि मैं क्या करना चाहते हैं मदद की। – Hosea146

22

आप अपने प्रोजेक्ट का प्रतीक फ़ोल्डर में एक छवि है तो और इसके निर्माण कार्रवाई "संसाधन" है, तो आप इसे इस का उल्लेख कर सकते हैं:

<Image Source="/Icons/play_small.png" /> 

सबसे आसान तरीका यह करने के लिए है कि।

var resourceManager = new ResourceManager(typeof (Resources)); 
var bitmap = resourceManager.GetObject("Search") as System.Drawing.Bitmap; 

var memoryStream = new MemoryStream(); 
bitmap.Save(memoryStream, System.Drawing.Imaging.ImageFormat.Bmp); 
memoryStream.Position = 0; 

var bitmapImage = new BitmapImage(); 
bitmapImage.BeginInit(); 
bitmapImage.StreamSource = memoryStream; 
bitmapImage.EndInit(); 

this.image1.Source = bitmapImage; 
+15

इस पर थोड़ी भिन्नता है: '<छवि स्रोत ="/प्रतीक/play_small.png "/> 'प्रारंभ में आगे स्लैश नोट करें जिसका अर्थ है रूट फ़ोल्डर में देखें। यदि xaml फ़ाइल रूट पर नहीं है, तो यह आवश्यक है कि आगे के स्लैश के बिना, यह xaml फ़ाइल के समान निर्देशिका में खोज शुरू कर देगा। –

+0

धन्यवाद, अद्यतन उत्तर। – RandomEngy

7

संसाधन फ़ाइल का उपयोग करने का लाभ नामों से संसाधनों तक पहुंच रहा है, इसलिए छवि बदल सकती है, छवि का नाम बदल सकता है, जब तक कि संसाधन को अद्यतित रखा गया हो, सही छवि दिखाई देगी।

यहाँ एक क्लीनर दृष्टिकोण यह पूरा करने के लिए है: मान लिया जाये कि Resources.resx 'UI.Images' नाम स्थान में है, इस तरह से अपनी XAML में नाम स्थान संदर्भ जोड़ें:

xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
xmlns:UI="clr-namespace:UI.Images" 

इस तरह से अपनी छवि स्रोत सेट :

<Image Source={Binding {x:Static UI:Resources.Search}} /> जहां 'खोज' संसाधन का नाम है।

2
  1. अपनी परियोजना में फ़ोल्डर जोड़ें और "मौजूदा आइटम" के माध्यम से इन्हें चित्र जोड़ें। इस के समान
  2. XAML: <Image Source="MyRessourceDir\images\addButton.png"/>
  3. F6 (बिल्ड)
संबंधित मुद्दे