2012-12-18 9 views
6

Ho un pannello chiamato panel1 e sto cercando di tracciare una linea sulla mia panel1 utilizzando questo codice:draw line sul pannello non presentandosi

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); 

Ma nulla sta rivelando. Qualche idea? Questo è in una forma di Windows.

+0

Avete questo nell'evento Paint()? –

+0

Ce l'ho nel costruttore – Badmiral

risposta

12

la maniglia della Paint event pannello e metterlo in là. Quello che sta succedendo è che viene disegnato una volta nel costruttore ma poi viene richiamato nell'evento Paint ogni volta che viene chiamato.

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

Un altro modo di vedere la linea è creare un pulsante e tracciare la linea nel metodo OnClick del pulsante in questo modo: private void btnDraw_Click (mittente dell'oggetto, EventArgs e) { Grafica dc = drawingArea.CreateGraphics(); Pen BlackPen = new Pen (Color.Black, 2); dc.DrawLine (BlackPen, 0, 0, 200, 200); BlackPen.Dispose(); dc.Dispose(); } – Combine

2

Inseritelo in qualche evento dopo che il modulo è stato creato e visualizzato sullo schermo e dovrebbe funzionare correttamente.

È preferibile inserirlo nell'evento Paint, come indicato da keyboardP, ma non verrà visualizzato se chiamato prima che il modulo venga visualizzato sullo schermo.

Per testare questo si può aggiungere un pulsante e aggiungere il codice per l'evento click:

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

Forse sarebbe meglio dare l'esempio e avvolgerlo in una istruzione 'using'? :) –

+0

Provato cambiando la definizione g, non è successo niente – Badmiral

+0

Modificata la mia risposta. Non il problema che pensavo fosse. –

0

Per vedere il disegno - si può semplicemente fare un pulsante con un Click Event e disegnare quando il pulsante viene premuto. Per esempio:

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(); 
}  

Oh, e dal modo in cui "DrawingArea" è il (Nome) sia di un PictureBox o Pannello di aver aggiunto al modulo (per disegnare in esso).