Saturday, 15 August 2015

c# - More than 2 millions rectangles in a WPF canvas -


मैं अर्धचालक wafermap  यहाँ छवि विवरण दर्ज करें

उन सभी छोटे आयत को निम्नलिखित आवश्यकताओं को पूरा करने की आवश्यकता है; 1) इंडेक्स को दिखाने के लिए टूलटिप 2) वेफर्मप परिभाषा से शामिल करने या निकालने के लिए क्लिक।

1400 x 1450 के मरने के मामले में wafermap में मरने वालों की संख्या 2 मिलियन पार हो सकती है। < P> कुछ बिंदु पर मुझे एक खिड़की में सभी मरने की ज़रूरत है (ज़्यादातर ज़ूम इन में होने वाले अधिकांश क्लिक)।

वर्तमान में मैं प्रत्येक को अलग से आयताकार आकृति का जोड़ कर जोड़ रहा हूं और समन्वय की जानकारी को संग्रहित करता हूं ( टूलटिप के लिए एक संलग्न संपत्ति के रूप में सूचकांक (10,10))।

मैं प्रत्येक मरने के लिए अलग शैली का उपयोग करता हूं; कुछ गणना और मरने की स्थिति के आधार पर।

  डाई स्टाइल 1 = नया स्टाइल {TargetType = typeof (आयत)}; DieStyle1.Setters.Add (नया सेटर (आकृति.फिलप्रोटीटी, ब्रश.मदियमस्लेटबालू)); DieStyle1.Setters.Add (नया सेटर (आकार। स्ट्रोक प्रॉपर्टी, ब्रश। व्हाइट)); DieStyle1.Setters.Add (नया इवेंटसेटर (माउसडाउनइवेंट, नए माउसबटन एवेंटहैंडलर (डायस्टाइल 1_MouseDown)));   

यह दृष्टिकोण धीमा है और उच्च मेमोरी का उपयोग भी करता है। तो क्या WPF में इसे हासिल करने का एक बेहतर तरीका सुझाया गया है? क्रिसमस पेड़ की रोशनी के लिए एक डिजाइनर बनाने में, मैं एक ही समस्या में भाग गया

जब आप 100 + वस्तुओं तक पहुंचते हैं तो UIElement या आकार का उपयोग करना बहुत धीमा है बड़ी संख्या में मदों को संभालने के लिए सबसे अच्छा तरीका, छवि के अपने प्रबंधित बफर और क्लिक्स को संभालने के लिए एक संरचना के साथ डबल-बफरिंग का उपयोग करने पर जोर देता है। मैंने अपनी परियोजना को पोस्ट किया है जिसे आपको अच्छी शुरुआत देनी चाहिए इसे यहां प्राप्त किया जा सकता है:

आप नियंत्रण में रुचि रखते हैं \ ChannelitemsCanvas.cs। इसे आपकी आवश्यकताओं के अनुरूप संशोधित किया जा सकता है और आयताकारों को संग्रहीत करने के लिए एक ट्रैड-ट्री का उपयोग करता है ताकि क्लिक करने के लिए घटनाओं को तुरंत निर्धारित किया जा सके।

No comments:

Post a Comment