2012-10-31 20 views
5

में बड़ी संख्या में छवियों को चित्रित करना मैं सी # विंडोज फॉर्म में गेम के लिए एक मानचित्र संपादक बना रहा हूं। मुझे जो चाहिए वह एक ग्रिड है जिसे कुछ हज़ारों छवियों को स्टोर करना होगा।सी # विंडोज फॉर्म

मेरा पहला दृष्टिकोण Panel नियंत्रण बनाना था और फिर इसमें PictureBoxes जोड़ें। दुर्भाग्य से 2000 छवियों को आकर्षित करने में लगभग 3 सेकंड लग गए।

तब मैं Rectangles बनाने और आशा बेहतर परिणाम प्राप्त करने के लिए Panel के OnPaint() विधि में उन पर Images ड्राइंग की कोशिश करने का फैसला किया लेकिन यह अभी भी बहुत धीमी है।

क्या विंडोज़ फॉर्म में इतनी सारी छवियां प्रस्तुत करने का कोई बेहतर, कुशल तरीका है?

किसी भी सलाह के लिए अग्रिम धन्यवाद।

+0

उन सभी 2000 छवियों स्क्रीन पर दिखाई एक ही समय में कर रहे हैं? –

+0

हां, वे हैं। और उन्हें बहुत तेजी से प्रस्तुत करने की आवश्यकता है ताकि मानचित्र पर दूसरे स्थान पर जाकर 3 सेकंड लगने की आवश्यकता न हो। –

+0

@Mosquito - आप जो चाहते हैं वह यथार्थवादी नहीं है। आप छवियों को क्यों उत्पन्न नहीं कर सकते हैं, फिर निर्धारित करें कि आपको कौन सी छवियों को प्रदर्शित करने की आवश्यकता है? मैं तर्क दूंगा कि '3 सेकंड' जितना तेज़ होगा उतना तेज़ होगा। –

उत्तर

3

पेंट घटना का प्रयोग के रूप में आप क्या किया है लेकिन ...

छवियों के लोड होने के भाग के रूप में, एक ज़ूम आउट किया गया संस्करण है जहाँ आप एक में 16 छवियों को मर्ज है, जो केवल 125 छवियों है कैश, जब आप एक निश्चित पैमाने पर ज़ूम आउट करें, प्री-रेंडर ज़ूम आउट संस्करण का उपयोग करने के लिए स्विच करें।

आप जितनी बार चाहें उतनी बार ज़ूम स्तरों के लिए ऐसा कर सकते हैं जितनी बार स्क्रीन पर जितनी संभव हो सके स्क्रीन पर कुछ छवियों को रखने के विचार के साथ। तो आप इसे 4 से फिर से विभाजित कर सकते हैं।

मैं ऐसा प्रोजेक्ट के लिए करता हूं जिसमें 65536 छवियां (256 x 256) शामिल हैं। कैश को डिस्क पर भी लिखा जाता है, इसलिए हर बार जब आप ज़ूम आउट करते हैं तो आप छवियों की एक ही संख्या देखते हैं। मेरे संपादकीय में मैं केवल 16 छवियों को किसी भी समय देख सकता हूं, भले ही मैं पूरे मानचित्र को देख रहा हूं।

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

आप शुरू में लोड समय में वृद्धि हुई देंगे, लेकिन मुझे यकीन है आप पहले से ही एक महत्वपूर्ण लोड समय बंद डिस्क 2000 छवियों खींच है

+0

उत्तर के लिए बहुत बहुत धन्यवाद। :-) –

+0

@Mosquito, मुझे खुशी है कि यह सहायक था! –

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