Entwickler-Ecke
WinForms - Zeichnen in eine Picturebox bei Formularaufruf
Florian Wolf - Mo 31.05.10 17:36
Titel: Zeichnen in eine Picturebox bei Formularaufruf
Hallo,
ich habe auf meinem Formular eine picturebox in die ich ein paar Rechtecke Zeichnen muss.
Das funktioniert auch soweit. Nur wenn ich die Methode zum zeichnen der Rechtecke beim Aufrufen des Formulars aufrufe, dann sehe ich einmal kurz die Rechtecke und die verschwinden dann wieder. Wenn ich nachher manuell noch mal die Methode aufrufe sind die wieder da.
Wie kann es hinbekommen, dass ich gleich am Anfang die Rechtecke sehe.
Ich rufe das Formular wie folgt auf:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20:
| public void Execute( string strFensterbeschriftung, double dGroesseX, double dGroesseY) { this.Text = strFensterbeschriftung; toolTip1.ToolTipTitle = strFensterbeschriftung;
dgGroesseX = dGroesseX; dgGroesseY = dGroesseY;
this.Show();
gHostForm.Enabled = false;
RechteckeZeichnen();
} |
So zeichne ich die Rechtecke. In der Listview stehen die Koordinaten der Rechtecke.
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52:
| private void RechteckeZeichnen() { double dUmrechnungX; double dUmrechnungY; int iAnzahl; int iIndex; double dX1; double dY1; double dBreite; double dHoehe;
dUmrechnungX = pictureBox1.Width / dgGroesseX; dUmrechnungY = pictureBox1.Height / dgGroesseY;
Graphics objG;
Pen objPen = new Pen(Color.White); objPen.Width = 1;
objG = pictureBox1.CreateGraphics(); objG.FillRectangle(objPen.Brush, 0, 0, pictureBox1.Width, pictureBox1.Height);
iAnzahl = listView1.Items.Count; for (iIndex = 0; iIndex < iAnzahl; iIndex++) { if (listView1.Items[iIndex].SubItems[6].Text == "-1") { objPen.Color = Color.Red; } else { objPen.Color = Color.Green; } dX1 = Convert.ToDouble(listView1.Items[iIndex].SubItems[2].Text); dY1 = Convert.ToDouble(listView1.Items[iIndex].SubItems[3].Text);
dBreite = Convert.ToDouble(listView1.Items[iIndex].SubItems[4].Text) - dX1; dHoehe = Convert.ToDouble(listView1.Items[iIndex].SubItems[5].Text) - dY1;
dX1 *= dUmrechnungX; dY1 *= dUmrechnungY; dBreite *= dUmrechnungX; dHoehe *= dUmrechnungY;
objG.FillRectangle(objPen.Brush, (int)dX1, (int)dY1, (int)dBreite, (int)dHoehe); } objPen.Dispose(); objG.Dispose(); } |
danielf - Mo 31.05.10 17:43
Hallo,
entweder du schreibst direkt auf das Bild in der PictureBox oder du musst bei jedem Paint das Rechteck wieder neu zeichnen.
Gruß
Florian Wolf - Di 01.06.10 13:33
Danke,
der Artikel hat mir geholfen mein Problem zu lösen.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!