[c#] डब्ल्यूपीएफ छवि संसाधन


4 Answers

मुझे छवियों, वीडियो इत्यादि का उपयोग करने का सबसे अच्छा अभ्यास माना जाता है:

  • अपनी सामग्री " क्रिया बनाएं" में "सामग्री बनाएं" बदलें। निर्देशिका बनाने के लिए प्रतिलिपि जांचना सुनिश्चित करें
    • समाधान एक्सप्लोरर विंडो पर "राइट-क्लिक" मेनू पर मिला
  • निम्नलिखित प्रारूप में छवि स्रोत:
    • "/ « YourAssembly नाम » ; घटक /« YourPath »/ « YourImage.png » "

उदाहरण

<Image Source="/WPFApplication;component/Images/Start.png" />

लाभ:

  • फ़ाइलें असेंबली में एम्बेडेड नहीं हैं
    • संसाधन प्रबंधक कुछ मेमोरी ओवरफ्लो समस्याओं को बहुत अधिक संसाधनों के साथ बढ़ाएगा (निर्माण समय पर)
  • असेंबली के बीच बुलाया जा सकता है
Question

मैं ज्यादातर वेब और थोड़ा विंडोज फॉर्म पृष्ठभूमि से आया हूं। एक नई परियोजना के लिए, हम WPF का उपयोग करेंगे। WPF एप्लिकेशन को चित्रकारी उद्देश्यों के लिए 10-20 छोटे आइकन और छवियों की आवश्यकता होगी। मैं इन्हें असेंबली में एम्बेड किए गए संसाधनों के रूप में संग्रहीत करने के बारे में सोच रहा हूं। क्या यह सही तरीका है?

मैं एक्सएएमएल में कैसे निर्दिष्ट करूं कि छवि नियंत्रण को छवि को एम्बेडेड संसाधन से लोड करना चाहिए?




यह काम किया

और सेट करने के लिए छवियों गुणों में संसाधन है

    var bitmapSource = Imaging.CreateBitmapSourceFromHBitmap(MyProject.Properties.Resources.myImage.GetHbitmap(),
                                      IntPtr.Zero,
                                      Int32Rect.Empty,
                                      BitmapSizeOptions.FromEmptyOptions());
    MyButton.Background = new ImageBrush(bitmapSource);
img_username.Source = bitmapSource;



यदि आप मिश्रण का उपयोग कर रहे हैं, इसे अतिरिक्त आसान बनाने के लिए और स्रोत विशेषता के लिए सही पथ प्राप्त करने में कोई परेशानी नहीं है, तो प्रोजेक्ट पैनल से छवि को डिज़ाइनर पर खींचें और छोड़ें।




निष्पादन असेंबली में संसाधन लोड करने के लिए कोड में जहां मेरी छवि Freq.png फ़ोल्डर Icons और Resource रूप में परिभाषित किया गया था:

this.Icon = new BitmapImage(new Uri(@"pack://application:,,,/" 
    + Assembly.GetExecutingAssembly().GetName().Name 
    + ";component/" 
    + "Icons/Freq.png", UriKind.Absolute)); 

अगर कोई इसका इस्तेमाल कर सकता है तो मैंने एक समारोह भी बनाया है:

/// <summary>
/// Load a resource WPF-BitmapImage (png, bmp, ...) from embedded resource defined as 'Resource' not as 'Embedded resource'.
/// </summary>
/// <param name="pathInApplication">Path without starting slash</param>
/// <param name="assembly">Usually 'Assembly.GetExecutingAssembly()'. If not mentionned, I will use the calling assembly</param>
/// <returns></returns>
public static BitmapImage LoadBitmapFromResource(string pathInApplication, Assembly assembly = null)
{
    if (assembly == null)
    {
        assembly = Assembly.GetCallingAssembly();
    }

    if (pathInApplication[0] == '/')
    {
        pathInApplication = pathInApplication.Substring(1);
    }
    return new BitmapImage(new Uri(@"pack://application:,,,/" + assembly.GetName().Name + ";component/" + pathInApplication, UriKind.Absolute)); 
}

उपयोग (धारणा आपने फ़ंक्शन को हेल्पर क्लास में रखा है):

this.Icon = ResourceHelper.LoadBitmapFromResource("Icons/Freq.png");

नोट : डब्ल्यूपीएफ में एमएसडीएन पैक यूआरआई देखें:
pack://application:,,,/ReferencedAssembly;component/Subfolder/ResourceFile.xaml




पूर्ण विवरण संसाधनों का उपयोग कैसे करें: https://msdn.microsoft.com/en-us/library/aa970494(v=vs.100).aspx और उन्हें संदर्भित करने के लिए कैसे करें "WPF में पैक यूआरआई"

संक्षेप में, संदर्भित / संदर्भित असेंबली से संसाधनों का संदर्भ देने के साधन भी हैं




Related