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