2010-01-22 7 views
5

मेरे पास संसाधन फ़ाइल में 30 पीएनजी हैं और मैं टाइमर के अंदर उनके चारों ओर फिर से शुरू करना चाहता हूं। यह टाइमर मूल एनीमेशन बनाने के लिए अनुक्रम में अगली पीएनजी में फॉर्म की पृष्ठभूमि छवि सेट करता है।संसाधन फ़ाइल में प्रोग्रामिक रूप से छवियों का उपयोग कैसे करें?

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

नोट्स:

  • संसाधन फ़ाइल के अंदर छवियों अनुक्रम ('image001.png', 'image002.png', ...) में रखे गए हैं।
  • यह संसाधन फ़ाइल इन छवियों को स्टोर करने के लिए विशेष रूप से उपयोग की जाती है।
+0

मेरे अपडेट किए गए उत्तर को देखें – Fredou

+0

आपका अपडेट किया गया उत्तर वह है जो मैं आपको ढूंढ रहा था! – InvertedAcceleration

+0

इस ब्लॉग को देखें: [सोशल एमएसडीएन] (http://social.msdn.microsoft.com/Forums/en-US/netfxbcl/thread/5a38e44d-bb43-4434-b8d5-4246cdc7a97d) – rfonn

उत्तर

2
private void Form1_Load(object sender, EventArgs e) 
    { 
     var list = WindowsFormsApplication1.Properties.Resources.ResourceManager.GetResourceSet(new System.Globalization.CultureInfo("en-us"), true, true); 
     foreach (System.Collections.DictionaryEntry img in list) 
     { 
      System.Diagnostics.Debug.WriteLine(img.Key); 
      //use img.Value to get the bitmap 
     } 

    } 
+0

मैं संसाधन फ़ाइलों के इस उपयोग को समझता हूं। मेरा सवाल यह है कि मैं इस प्रकार के उपयोग को 'वर्तमान छवि को देखते हुए, अगली छवि पर जाने' के लिए कैसे उपयोग करूंगा? क्या आप एक कोड उदाहरण प्रदान कर सकते हैं? – InvertedAcceleration

0

this forum answer कैसे GetManifestResourceStream() का उपयोग करता है? इसके अलावा

string[] resourceNames = Assembly.GetManifestResourceNames(); 
foreach(string resourceName in resourceNames) 
{ 
    System.Console.WriteLine(resourceName); 
} 

, Form1_Load समारोह में example की जाँच:

+0

जानकारी के लिए धन्यवाद, इस दृष्टिकोण के साथ मुझे फ़ाइल का सटीक नाम निर्दिष्ट करने की आवश्यकता है, क्या इससे बचने के लिए वैसे भी है? – InvertedAcceleration

1
Assembly asm = Assembly.GetExecutingAssembly(); 
for(int i = 1; i <= 30; i++) 
{ 
    Stream file = asm.GetManifestResourceStream("NameSpace.Resources.Image"+i.ToString("000")+".png"); 
    // Do something or store the stream 
} 

सभी एम्बेड किए गए संसाधन के नाम पर प्राप्त करने के लिए।

+0

इस विधि (जो काम करेगा) के साथ एकमात्र मुद्दा यह होगा कि यदि मैं छवियों का नाम बदलता हूं (इस परियोजना में अपेक्षाकृत होने की संभावना है) मुझे वापस आना और कोड अपडेट करना होगा। क्या आपको लगता है कि यह अपरिहार्य है? – InvertedAcceleration

+0

आप एम्बेडेड संसाधनों की सूची प्राप्त कर सकते हैं, लेकिन यदि आप विशिष्ट फ़ाइलों की तलाश में हैं, तो मुझे इसके आसपास कोई रास्ता नहीं दिख रहा है। यदि आप जानते हैं कि संसाधनों में केवल फाइलें आपकी छवियां हैं, तो आप केवल GetManifestResourceNames() – SwDevMan81

+0

का उपयोग कर सकते हैं धन्यवाद, GetManifestResourceNames और GetManifestResourceStream का संयोजन मुझे अंतिम समाधान के बहुत करीब ले जाएगा। – InvertedAcceleration

1

कोडप्रोजेक्ट पर एम्बेडेड संसाधन here निकालने के तरीके पर एक अच्छा ट्यूटोरियल है, और यहां छवि को अल्फा-मिश्रित के रूप में उपयोग करने के लिए how है, और यह दिखाता है कि इसे छवि सूची में कैसे लोड किया जाए। एम्बेडेड संसाधनों को लोड करने के लिए यहां एक सहायक वर्ग है here

उम्मीद है कि यह मदद करता है, सर्वश्रेष्ठ संबंध, टॉम।

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