c# - महत - संसाधन की परिभाषा




सी#में परियोजना के संसाधन क्षेत्र से छवि लोड करें (11)

आप इस तरह के var में bmp भी सहेज सकते हैं:

var bmp = Resources.ImageName;

आशा करता हूँ की ये काम करेगा!

मेरे पास संसाधन / myimage.jpg पर संग्रहीत मेरे प्रोजेक्ट में एक छवि है। मैं बिटमैप ऑब्जेक्ट में इस छवि को गतिशील रूप से कैसे लोड कर सकता हूं?


आप निम्न तरीके से छवि का संदर्भ प्राप्त कर सकते हैं:

Image myImage = Resources.myImage;

अगर आप छवि की एक प्रति बनाना चाहते हैं, तो आपको निम्न कार्य करने की आवश्यकता होगी:

Bitmap bmp = new Bitmap(Resources.myImage);

जब आप इसके साथ काम करते हैं तो बीएमपी का निपटान करना न भूलें। यदि आप संकलन समय पर संसाधन छवि का नाम नहीं जानते हैं, तो आप संसाधन प्रबंधक का उपयोग कर सकते हैं:

ResourceManager rm = Resources.ResourceManager;
Bitmap myImage = (Bitmap)rm.GetObject("myImage");

संसाधन प्रबंधक का लाभ यह है कि आप इसका उपयोग कर सकते हैं जहां resource.myImage आमतौर पर दायरे से बाहर होगा, या जहां आप गतिशील रूप से संसाधनों तक पहुंच बनाना चाहते हैं। इसके अतिरिक्त, यह ध्वनि, कॉन्फ़िगरेशन फ़ाइलों आदि के लिए काम करता है।


कोड मैं अपनी कई परियोजनाओं में उपयोग करता हूं ... यह मानता है कि आप संसाधनों में छवियों को केवल बिटमैप्स के रूप में नहीं स्टोर करते हैं

    public static Bitmap GetImageByName(string imageName)
    {
        System.Reflection.Assembly asm = System.Reflection.Assembly.GetExecutingAssembly();
        string resourceName = asm.GetName().Name + ".Properties.Resources";
        var rm = new System.Resources.ResourceManager(resourceName, asm);
        return (Bitmap)rm.GetObject(imageName);

    }

क्या आप विंडोज फॉर्म का उपयोग कर रहे हैं? यदि आपने गुण / संसाधन UI का उपयोग करके छवि को जोड़ा है, तो आपको जेनरेट कोड से छवि तक पहुंच प्राप्त होती है, ताकि आप इसे आसानी से कर सकें:

var bmp = new Bitmap(WindowsFormsApplication1.Properties.Resources.myimage);

डिजाइनर में पोकिंग से आश्चर्यजनक रूप से पर्याप्त, मुझे लगता है कि एक बहुत ही सरल दृष्टिकोण लगता है:

प्रतीत होता है कि छवि .Properties.Resources से उपलब्ध है।

मैं बस एक छवि का उपयोग कर रहा हूं क्योंकि मुझे इसमें दिलचस्पी है, इसे उस पर एक छवि के साथ नियंत्रण में चिपका रहा है।

(नेट 4.0, वीएस -2010।)


नीचे एक का प्रयोग करें। मैंने इसका परीक्षण विंडोज फॉर्म के ग्रिड व्यू सेल के साथ किया है।

Object rm = Properties.Resources.ResourceManager.GetObject("Resource_Image");
Bitmap myImage = (Bitmap)rm;
Image image = myImage;

"संसाधन_इमेज" का नाम, आप परियोजना से पा सकते हैं।

प्रोजेक्ट के नाम के तहत, आप Properties पा सकते हैं। इसे विस्तारित करें। वहां आप Resources.resx फ़ाइल देख सकते हैं। खोलो इसे। अपने फ़ाइल नाम को "संसाधन_इमेज" के रूप में लागू करें।


मैं सुझाव देता हूँ:

System.Reflection.Assembly thisExe;
thisExe = System.Reflection.Assembly.GetExecutingAssembly();
System.IO.Stream file = 
    thisExe.GetManifestResourceStream("AssemblyName.ImageFile.jpg");
Image yourImage = Image.FromStream(file);

Msdn से: http://msdn.microsoft.com/en-us/library/aa287676(v=vs.71).aspx

Image.FromStream का उपयोग करना बेहतर है क्योंकि आपको छवि के प्रारूप (बीएमपी, पीएनजी, ...) को जानने की आवश्यकता नहीं है।


मैंने अपनी परियोजनाओं में से एक से डिजाइनर कोड को देखा और देखा कि यह इस नोटेशन का इस्तेमाल करता है

myButton.Image = global::MyProjectName.Properties.Resources.max;

जहां मैं प्रोजेक्ट में अपलोड किए गए संसाधन का नाम अधिकतम है।


सबसे अच्छी बात यह है कि उन्हें परियोजना में संसाधन सेटिंग्स में छवि संसाधन के रूप में जोड़ना है। फिर आप संसाधन.माइमेज कर सीधे छवि प्राप्त कर सकते हैं। यह एक जेनरेट सी # संपत्ति के माध्यम से छवि मिलेगा।

यदि आप छवि को एंबेडेड संसाधन के रूप में सेट करते हैं तो आप इसे प्राप्त कर सकते हैं:

string name = "Resources.myimage.jpg"
string namespaceName = "MyCompany.MyNamespace";
string resource = namespaceName + "." + name;
Type type = typeof(MyCompany.MyNamespace.MyTypeFromSameAssemblyAsResource);
Bitmap image = new Bitmap(type.Assembly.GetManifestResourceStream(resource));

जहां MyTypeFromSameAssemblyAsResource आपके असेंबली में आपके पास कोई भी प्रकार है।


सभी प्रस्तावित उत्तरों की तुलना में रास्ता आसान है

tslMode.Image = global::ProjectName.Properties.Resources.ImageName;

this.toolStrip1 = new System.Windows.Forms.ToolStrip();
this.toolStrip1.Location = new System.Drawing.Point(0, 0);
this.toolStrip1.Name = "toolStrip1";
this.toolStrip1.Size = new System.Drawing.Size(444, 25);
this.toolStrip1.TabIndex = 0;
this.toolStrip1.Text = "toolStrip1";
object O = global::WindowsFormsApplication1.Properties.Resources.ResourceManager.GetObject("best_robust_ghost");

ToolStripButton btn = new ToolStripButton("m1");
btn.DisplayStyle = ToolStripItemDisplayStyle.Image;
btn.Image = (Image)O;
this.toolStrip1.Items.Add(btn);




load