2011-09-26 19 views
8

मैं WPF का उपयोग कर एप्लिकेशन जैसे मानचित्र विकसित कर रहा हूं। मेरे पास ~ 10,000 PathGeometry है, आकार कैनवास में जोड़ा गया है। मैंने ज़ूमिंग और पैनिंग नियंत्रणों के लिए स्केलट्रांसफॉर्म और अनुवाद ट्रान्सफॉर्म जोड़ा है।WPF कैनवास प्रदर्शन में सुधार

मुझे जिस समस्या का सामना करना पड़ रहा है वह है, जब मैं ज़ूम या पैन करता हूं, तो थोड़ा सा अंतराल होता है। क्या डेटा व्यवस्थित करने का कोई तरीका है ताकि मैं केवल उन आकारों को संभाल सकूं जो दिखाई दे रहे हैं?

इसे और अधिक कुशल बनाने पर कोई संकेत उपयोगी और सराहना की जाएगी।

उत्तर

7

मेरा सुझाव है कि आप वर्चुअल कैनवास की अवधारणा के साथ इस दिलचस्प लेख को देखें: ZoomableApplication2: A Million Items। इसमें एक लाइव (एक्सबैप) डेमो ऑनलाइन भी है।

6

कैनवास पर आप किस तरह की चीजें डाल रहे हैं? यदि पथ जीमेट्री का उपयोग कर रहे हैं, तो क्या आप उन्हें पथ वर्ग में संलग्न कर रहे हैं? यदि ऐसा है, तो पथ में सुपरक्लास पदानुक्रम में फ्रेमवर्क एलिमेंट है, जो बड़े पैमाने पर प्रदर्शन हानि के लिए ज़िम्मेदार है।

Take a look at my question here. हालांकि यह आकार वर्ग के बारे में है, लेकिन प्रदर्शन गिरावट का कारण समान है, फ्रेमवर्क एलिमेंट।

यदि आप ऐसा कर रहे हैं, तो समाधान इसके बजाय पथजीमेट्री का उपयोग करना है, और इसे DrawingContext.DrawGeometry() विधि का उपयोग करके DrawingVisual के DrawingContext में संलग्न करना है।

यहां कुछ लिंक हैं जो मदद करनी चाहिए। Path Geometry

DrawingContext.DrawGeometry()

Optimizing Performance: 2D Graphics and Imaging

और आकार अपने आप को आकर्षित, लाइनों के संयोजन का उपयोग कर, और अन्य ज्यामिति वर्ग (ArcGeometry, PathGeometry आदि) से व्युत्पन्न वर्ग द्वारा प्रदान की बातें।

इससे मदद मिलनी चाहिए।

2

यदि आप WPF में तत्काल ड्राइंग के लिए प्रदर्शन में अंतिम चाहते हैं, तो WriteableBitmapEx देखें। यह एक उत्कृष्ट ओपन सोर्स लाइब्रेरी है, जिसे मैंने हाल ही में योगदान दिया है। यह लिखित योग्य बिटमैप पर जीडीआई जैसी ड्राइंग क्षमताओं को प्रदान करता है और विंडोज फोन, डब्ल्यूपीएफ और सिल्वरलाइट के साथ संगत है। एपीआई सरल है, आप ब्लिटिंग, बहुभुज, रेखाएं और सरल आकार इत्यादि प्राप्त करते हैं ... हालांकि आपको डेटामैप्लेट और ग्रेडियेंट ब्रश नहीं मिलेगा।

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