2010-01-04 7 views
5

पर आकार खींचें और ड्रॉप करें Canvas पर मैंने कई आकार (जैसे Ellipse और Rectangle) डाले। अब, मैं चाहता हूं कि उपयोगकर्ता & इन आकृतियों को खींचने में सक्षम हो। क्या कोई पूर्वनिर्धारित कार्यक्षमता है जिसका मैं उपयोग कर सकता हूं, या मुझे माउस ईवेंट का उपयोग करके ड्रैग & ड्रॉप करना चाहिए?कैनवास

धन्यवाद!

उत्तर

-1

मुझे विश्वास है कि आपको माउस ईवेंट और दृश्य पेड़ का उपयोग करके इसे स्वयं करने की आवश्यकता होगी। यहां एक लेख है जो मुझे विश्वास है - link text। यदि नहीं, तो मेरे पास कुछ नमूना कोड है जो मैं बाद में इस शाम को पोस्ट कर सकता हूं।

HTH

5

माउस घटनाओं निश्चित रूप से होगा हैंडलिंग और खींचें को लागू करने और ड्रॉप अपने आप काम करते हैं, लेकिन आप ऐसा करने के लिए आप अभिव्यक्ति ब्लेंड व्यवहार का लाभ उठाने में सक्षम हो सकता कोशिश कर रहे हैं पर निर्भर करता है। माइक्रोसॉफ्ट.एक्सप्रेस। इंटरैक्शन डीएलएल में सिल्वरलाइट और डब्ल्यूपीएफ में इस्तेमाल होने वाले कुछ उपयोगी बुनियादी व्यवहार, ट्रिगर और क्रियाएं शामिल हैं।

एक माउसड्रैग एलिमेंटबिवर है जो एक तत्व के लिए मूल ड्रैग और ड्रॉप कार्यक्षमता लागू करता है, जो आपके लेआउट कंटेनर के बावजूद काम करना चाहिए (इसलिए आप कैनवास से बाध्य नहीं होंगे)। आप मिश्रण का उपयोग करते हुए एक तत्व पर इस व्यवहार ड्रॉप कर सकते हैं, या इसे परिभाषित XAML में सीधे अगर आप चाहते हैं:

<Rectangle Fill="Red" Stroke="Black" HorizontalAlignment="Left" Width="100" Height="100"> 
    <i:Interaction.Behaviors> 
     <il:MouseDragElementBehavior/> 
    </i:Interaction.Behaviors> 
</Rectangle> 

आपका परियोजना के संदर्भ के लिए दोनों System.Windows.Interactivity.dll और Microsoft.Expression.Interactions होगा। इस व्यवहार का उपयोग करने के लिए डीएलएल।

संपादित करें (में सी # कोड-पीछे इस व्यवहार संलग्न दिखाने के लिए):

Rectangle rect = new Rectangle(); 
rect.Fill = new SolidColorBrush(Colors.Red); 
rect.Width = 100; 
rect.Height = 100; 

MouseDragElementBehavior dragBehavior = new MouseDragElementBehavior(); 
dragBehavior.Attach(rect); 

अपने बयान का उपयोग कर के साथ Microsoft.Expression.Interactivity.Layout नेमस्पेस शामिल करना न भूलें।

+0

हाय, मैं अभिव्यक्ति मिश्रण से वास्तव में परिचित नहीं हूं, लेकिन यह दिलचस्प लगता है। मैं कुछ प्रकार का प्रोग्राम कर रहा हूं जो उपयोगकर्ताओं को ज्यामितीय समस्याओं (मंडल, त्रिकोण, बिसेक्टर आदि) आकर्षित करने में सक्षम बनाता है। चूंकि आकार उपयोगकर्ता द्वारा गतिशील रूप से बनाए जाते हैं, मुझे लगता है कि मुझे XAML की बजाय CD में MouseDragElementBehavior सेट करने की आवश्यकता है, है ना? क्या आप ऐसा करने का सी # नमूना कोड प्रदान कर सकते हैं? मुझे System.Windows.Interactivity.dll और Microsoft.Expression.Interactions.dll का संदर्भ कैसे देना चाहिए? धन्यवाद! –

+0

यदि आपके पास एक्सप्रेशन ब्लेंड 3 स्थापित नहीं है तो आपको डीएलएल का संदर्भ देने में सक्षम होने के लिए एसडीके (मुफ्त में) डाउनलोड और इंस्टॉल करना होगा। आप इसे यहां डाउनलोड कर सकते हैं: http://www.microsoft.com/downloads/details.aspx?FamilyID=F1AE9A30-4928-411D-970B-E682AB179E17&displaylang=en व्यवहार के बारे में अच्छी चीजों में से एक कुछ को समाहित करने में सक्षम है यूआई व्यवहार कोड और उसके बाद एक्सएएमएल में घोषणात्मक रूप से तत्व को संलग्न करें। हालांकि, कोड-बैक में एक व्यवहार को तुरंत चालू करना और संलग्न करना संभव है, इसलिए मैं उपरोक्त संपादन को सी # में एक उदाहरण शामिल करने के लिए संपादित करूंगा। –

+0

दिलचस्प लगता है ... मैंने "माइक्रोसॉफ्ट एक्सप्रेशन ब्लेंड 3 एसडीके" डाउनलोड किया, लेकिन जब मैंने इसे इंस्टॉल करना शुरू किया, तो मुझे यह संदेश मिला: "माइक्रोसॉफ्ट एक्सप्रेशन ब्लेंड 3 एसडीके स्थापित करने से पहले नेट संस्करण 3.5 या नए रन-टाइम घटक स्थापित किए जाने चाहिए। कृपया समस्या को ठीक करने के बाद पुनः स्थापित करने का प्रयास करें। "। हालांकि, मुझे लगता है कि "माइक्रोसॉफ्ट .Net Framework 3.5" मेरे कंप्यूटर पर स्थापित है। क्या यह पर्याप्त नहीं है? –