c# - Is there a more performant alternative to ImageList.Images.Add? -
मेरे पास एक winforms ImageList
है जिसमें 200 256x256 छवियाँ हैं।
जब मैं एंट्स। NET प्रोफाइलर के अनुसार जोड़ें
विधि पर बिताए गए कार्यक्रमों का आधा हिस्सा, एक करके, छवियों को जोड़ता हूं।
इस प्रकार प्रोग्राम को लॉन्च करने में 10 सेकंड और 5 वहाँ बिताया है मेरी राय में यह बहुत धीमा है।
मैंने एक ही चीज़ को ImageList.Images.AddRange
का उपयोग करके लागू किया है। नतीजा नहीं बदला।
क्या किसी को यह हल करने के लिए कोई विकल्प या अनुकूलन पता है? क्या WPF ImageList
कोई भी तेज़ है? क्या कोई तेज Winforms ImageList
?
संपादित करें:
foreach (छवियों में स्ट्रिंग छविफ़ाइल) {imageList.Images.Add ( Image.FromFile (imagefile)); // बहुत सारे प्रोग्राम का निष्पादन समय लेता है I }
माइक्रोसॉफ्ट के WPF नमूने में से एक में एलबम और सूची दृश्यों पर एक नज़र डालें अनुप्रयोगों। उनके पास कुछ अलग थंबनेल व्यू स्क्रीन हैं जो बहुत तेज़ी से लोड होते हैं (सभी छवियों को एसिंक्रोनस रूप से लोड किया जाता है और केवल आवश्यक चित्र लोड किए जाते हैं)। और अगर आपको लगता है कि आप क्या चाहते हैं, तो आपको आरंभ करने के लिए पूर्ण स्रोत कोड है।
यह ठीक पिकासा की तरह नहीं है (वे केवल पिकासा जैसी आंशिक रूप से आच्छादित पंक्तियों के बजाए फ़ोटो की पूर्ण पंक्तियां दिखाते हैं), लेकिन अपने स्वयं के वर्चुअलाइजिंग IScrollInfo पैनल (यथोचित सीधा, और बेन कांस्टेबल में एक महान है) को कार्यान्वित करके, आपको उस प्रदर्शन को प्राप्त करने में सक्षम होना चाहिए जो आप चाहते हैं और जो व्यवहार आप चाहते हैं।
एक अंतिम नोट: आप क्या यह पहले से ही कर रहा है (क्या आपकी छविएं 256x256 पिक्सेल छवियों के रूप में संग्रहित हैं?), लेकिन जब भी आप छवि थंबनेल प्रदर्शित करने का प्रयास कर रहे हैं, तो आप पूरी छवि लोड नहीं करना चाहते हैं। 256x256 पिक्सेल थंबनेल के पूरे स्क्रीनरीयर को रेंडर करने के लिए डिस्क के बंद 2 एमबी + इमेज फ़ाइलों को पढ़ना हमेशा इसके बजाय एक उचित आकार की लघु थंबनेल छवि को पढ़ने की तुलना में एक बड़ा प्रदर्शन हिट है। यदि आप कर सकते हैं, तो कहीं थंबनेल को कैश कर सकते हैं (जैसे कि विंडोज और पिकासा करना), या बहुत कम से कम, किसी भी JPEG फ़ाइलों में एम्बेड किए गए थंबनेल का उपयोग करने का प्रयास करें।
Comments
Post a Comment