2012-12-18 22 views
6

मैं एक पैनल Panel1 कहा जाता है और मैं अपने Panel1 इस कोड का उपयोग पर एक पंक्ति आकर्षित करने के लिए कोशिश कर रहा हूँ:ड्रा लाइन से नहीं दिखाई दे

Graphics g = panel1.CreateGraphics(); 
     var p = new Pen(Color.Black, 3); 
     var point1 = new Point(234,118); 
     var point2 = new Point(293,228); 
     g.DrawLine(p, point1, point2); 

लेकिन कुछ भी नहीं दिखा रहा है। कोई विचार? यह एक विंडोज़ फॉर्म में है।

+0

क्या आपके पास यह पेंट() ईवेंट में है? –

+0

मेरे पास यह निर्माता – Badmiral

उत्तर

12

संभाल पैनल के Paint event और वहाँ में रख दें। क्या हो रहा है कि यह एक बार कन्स्ट्रक्टर में खींचा जा रहा है लेकिन फिर इसे Paint ईवेंट में हर बार कहा जाता है।

private void panel1_Paint(object sender, PaintEventArgs e) 
{ 
    base.OnPaint(e); 
    using(Graphics g = e.Graphics) 
    { 
     var p = new Pen(Color.Black, 3); 
     var point1 = new Point(234,118); 
     var point2 = new Point(293,228); 
     g.DrawLine(p, point1, point2); 
    } 
} 
+0

लाइन को देखने का दूसरा तरीका बटन बनाना है और बटन को ऑनक्लिक विधि में अपनी रेखा खींचना है: निजी शून्य बीटीएनड्रा_Cलिक (ऑब्जेक्ट प्रेषक, इवेंटएआरजी ई) { ग्राफिक्स डीसी = ड्राइंग एरिया। क्रेतेग्राफिक्स(); पेन ब्लैकपेन = नया पेन (रंग। ब्लैक, 2); डीसी ड्रायलाइन (ब्लैकपेन, 0, 0, 200, 200); ब्लैकपेन। डिस्प्ले(); डीसी डिस्प्ले(); } – Combine

2

फॉर्म बनाने के बाद इसे किसी ईवेंट में रखें और स्क्रीन पर दिखाया गया है और इसे ठीक काम करना चाहिए।

कीबोर्ड पेंट के रूप में इसे पेंट इवेंट में डालना सबसे अच्छा है, लेकिन स्क्रीन पर फॉर्म दिखाए जाने से पहले इसे कॉल नहीं किया जाएगा।

यह परीक्षण करने के आप एक बटन जोड़ने के लिए और क्लिक करें घटना के लिए कोड जोड़ सकते हैं:

private void button1_Click(object sender, EventArgs e) 
{ 
    using (Graphics g = panel1.CreateGraphics()) 
    { 
     g.DrawLine(new Pen(Color.Back, 3), new Point(234,118), new Point(293,228)); 
    } 
} 
+0

में है, उदाहरण के लिए यह सबसे अच्छा होगा और 'उपयोग' कथन में लपेटें? :) –

+0

जी परिभाषा को बदलने का प्रयास किया, कुछ भी नहीं हुआ – Badmiral

+0

मेरा जवाब बदल गया। मुद्दा यह नहीं था कि मैं यह था। –

0

अपनी ड्राइंग देखने के लिए - आप बस एक क्लिक ईवेंट के साथ एक बटन बना सकते हैं और बटन क्लिक होने पर आकर्षित कर सकते हैं। उदाहरण के लिए:

private void btnDraw_Click(object sender, EventArgs e) 
{ 
    Graphics dc = drawingArea.CreateGraphics(); 
    Pen BlackPen = new Pen(Color.Black, 2); 
    dc.DrawLine(BlackPen, 0, 0, 200, 200); 

    BlackPen.Dispose(); 
    dc.Dispose(); 
}  

ओह, और द्वारा जिस तरह से "drawingArea" (नाम) है या तो एक PictureBox या पैनल आप अपने प्रपत्र में शामिल किया है की (उस में आकर्षित करने के लिए)।