2012-09-26 1 views
6

मैं अब कुछ घंटों के लिए ऐसा करने की कोशिश कर रहा हूं, लेकिन मेरे जीवन के लिए मैं इसे संभव नहीं बना सकता।Winform एक चित्र बॉक्स के अंदर एक छवि को स्थानांतरित करें

जो मैं करने की कोशिश कर रहा हूं वह केवल एक तस्वीर बॉक्स में एक तस्वीर बॉक्स में पाए गए छवि को स्थानांतरित कर सकता है। मेरी छवि लगभग 1000x1000 पिक्सेल है और मेरा बॉक्स 400x500 की तरह मनमाना है, इसलिए, उदाहरण के लिए, जब मैं माउस पर क्लिक करता हूं तो मैं चाहता हूं कि छवि 50 से बाईं ओर ले जाए। लेकिन छवि बॉक्स एक ही आकार में रहना चाहिए।

मेरे जीवन के लिए, हालांकि, मैं इसे काम पर नहीं ला सकता। मैं जो करने में सक्षम हूं वह निम्नलिखित है:

 if (kinectController.hands[0].fingertips.Count == 1) 
     { 
      pictureBox1.SizeMode = PictureBoxSizeMode.CenterImage; 

     } 

यह फ़ंक्शन मेरे किनेक्ट उंगली ट्रैकिंग ऐप के लिए है। तो जब एप्लिकेशन स्क्रीन पर एक एकल खोजक बिंदु दृश्यमान पाता है, तो छवि केंद्रित होती है। हालांकि, मैं अंततः छवि को अपनी उंगली आंदोलन के साथ आगे बढ़ाना पसंद करूंगा, जो एक बार मैं छवि को कुछ पिक्सेल को आगे बढ़ने के मूल चरण को पूरा करने के बाद आऊंगा।

इसके साथ किसी भी मदद की सराहना की जाएगी।

उत्तर

10

मैंने थोड़ा सा शोध किया और जाहिर तौर पर एक पिक्चरबॉक्स के भीतर एक छवि को स्थानांतरित करना कोई आसान काम नहीं है, कम से कम मुझे ऐसा कुछ भी नहीं मिला जो संभव हो सके (यह नहीं कह रहा कि ऐसा करने का कोई तरीका नहीं है हालांकि यह)।

हालांकि, मैं कुछ "कामकाज" के साथ आया, यह देखें कि यह आपकी आवश्यकताओं के अनुरूप है या नहीं। यह करने के लिएः

  • एक पैनल नियंत्रण बनाएँ, और आकार यह तथापि छवि के ज्यादा आप यह में अपनी छवि के साथ एक PictureBox नियंत्रण है कि पैनल जगह अंदर
  • प्रदर्शित करने और SizeMode सेट करना चाहते हैं के लिए ऑटोसाइज करने के लिए संपत्ति।

अब, जब भी आप क्लिक करें और PictureBox पर खींचें, यह वास्तव में यह के भीतर छवि स्थानांतरित नहीं होगा अपने रूप में इस कोड को

private bool Dragging; 
private int xPos; 
private int yPos; 
private void pictureBox1_MouseUp(object sender, MouseEventArgs e) { Dragging = false; } 
private void pictureBox1_MouseDown(object sender, MouseEventArgs e) { 
    if (e.Button == MouseButtons.Left) { 
     Dragging = true; 
     xPos = e.X; 
     yPos = e.Y; 
    } 
} 
private void pictureBox1_MouseMove(object sender, MouseEventArgs e) { 
    Control c = sender as Control; 
    if (Dragging && c!= null) { 
     c.Top = e.Y + c.Top - yPos; 
     c.Left = e.X + c.Left - xPos; 
    } 
} 

अब, लेकिन पैनल के भीतर PictureBox नियंत्रण। दोबारा, बिल्कुल वही नहीं जो आप खोज रहे थे और मुझे यकीन नहीं है कि यह कैसे किनेक्ट में परिवर्तित होगा, लेकिन मुझे उम्मीद है कि यह आपको सही रास्ते पर ले जाएगा।