2011-08-14 16 views
15

मैं वर्तमान में एक गेम बना रहा हूं जहां खिलाड़ी अपनी इकाइयों में से एक पर क्लिक करेगा (जो चित्र बॉक्स हैं) और एक सर्कल केंद्र में खिलाड़ी की इकाई के साथ दिखाई देगी। (मंडल भी एक पिक्चरबॉक्स है) जब खिलाड़ी सर्कल के पिक्चरबॉक्स पर क्लिक करता है तो मुझे यह पता लगाने की आवश्यकता होती है कि क्लिक की स्थिति सर्कल के त्रिज्या के अंदर है या नहीं। मेरा सवाल यह है कि मैं क्लिक की स्थिति कैसे प्राप्त करूं?एक क्लिक की स्थिति कैसे प्राप्त करें?

+2

यदि आप गेम बनाने की दिशा में काम कर रहे हैं, तो Winforms ढांचे का उपयोग करना सबसे अच्छा विकल्प नहीं है। एक कंसोल आधारित गेम के साथ शुरू करने और XNA (या किसी अन्य सी # गेम इंजन) तक अपना रास्ता काम करने के बारे में कैसे। – Neowizard

उत्तर

23

क्लिक हैंडलर में कार्य करें:

MousePosition.X 
    MousePosition.Y 

उदाहरण जोड़ें:

 // 
     // pictureBox1 Init 
     // 
     this.pictureBox1.Location = new System.Drawing.Point(1, 1); 
     this.pictureBox1.Name = "pictureBox1"; 
     this.pictureBox1.Size = new System.Drawing.Size(100, 100); 
     this.pictureBox1.Click += new System.EventHandler(this.pictureBox1_Click); 

...................... ....................

private void pictureBox1_Click(object sender, EventArgs e) 
    { 
     MessageBox.Show(string.Format("X: {0} Y: {1}", MousePosition.X, MousePosition.Y)); 
    } 

शो: "एक्स: 537 Y: 946"

एक और बात:

निर्देशांक वाले माउसइवेंटएआरजी केवल माउसअप और माउसडाउन प्राप्त करते हैं।

माउसक्लिक आपको कॉर्डिनेट्स को पुन: प्राप्त नहीं कर सकता है क्योंकि क्लिक माउस और माउसडाउन से होता है और इसमें दोनों अलग-अलग निर्देशांक हो सकते हैं।

एक और समाधान (सोचो यह सबसे अच्छा)

private int X; 
    private int Y; 

    private void pictureBox1_Click(object sender, EventArgs e) 
    { 
     MessageBox.Show(string.Format("X: {0} Y: {1}", X, Y)); 
    } 

    private void pictureBox1_MouseUp(object sender, MouseEventArgs e) 
    { 
     X = e.X; 
     Y = e.Y; 
    } 
+0

क्या मुझे कोड प्रकार का उदाहरण मिल सकता है क्योंकि जब मैं एक पिक्चरबॉक्स पर क्लिक करता हूं तो मुझे क्लिक करने के लिए क्लिक नहीं मिल सकता है मैंने परीक्षण किया था: ऑनडॉइडक्लिक (MouseEventArgs e) { बेस.ऑनमोउसक्लिक (ई); यदि (MousePosition.X> 200) {MessageBox.Show ("YESSSSSSS"); } } – Mobianhero

+0

मैंने ऊपरी भाग में उदाहरण जोड़ा है! –

+0

निर्देशांक के साथ MouseEventArgs केवल माउसअप और माउसडाउन प्राप्त करता है। माउसक्लिक आपको कॉर्डिनेट्स को पुन: प्राप्त नहीं कर सकता क्योंकि क्लिक माउस और माउसडाउन से होता है और इसमें दोनों अलग-अलग निर्देशांक हो सकते हैं। –

2
+0

मुझे अभी भी नहीं दिखाई देता है कि मैं – Mobianhero

+0

पर क्लिक करने के निर्देशांक कैसे प्राप्त कर सकता हूं 'ऑनमोउसक्लिक' को 'माउसईवेंटएआरजीएस 'पैरामीटर के रूप में प्राप्त होता है जिसमें' एक्स' और 'वाई' निर्देशांक होते हैं ... ऊपर दिए गए लिंक देखें ... – Yahia

+2

मैं बस इसके बजाय इसे xna पर बनाया – Mobianhero

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