Warum ändern sich die Farben nach dem Zeichnen von Kreisen? In der Tat zeichne ich Kreise, aber mein Problem ist, dass nach jedem Doppelklick die Farbe der nächsten Kreise von Blau auf die Hintergrundfarbe wechselt.Warum ändern sich nach dem Zeichnen von Kreisen die Farben?
public Form1()
{
InitializeComponent();
pictureBox1.Paint += new PaintEventHandler(pic_Paint);
}
public Point positionCursor { get; set; }
private List<Point> points = new List<Point>();
public int circleNumber { get; set; }
private void pictureBox1_DoubleClick(object sender, EventArgs e)
{
positionCursor = this.PointToClient(new Point(Cursor.Position.X - 25, Cursor.Position.Y - 25));
points.Add(positionCursor);
pictureBox1.Invalidate();
}
private void pic_Paint(object sender, PaintEventArgs e)
{
Graphics g = e.Graphics;
g.SmoothingMode = SmoothingMode.AntiAlias;
foreach (Point pt in points)
{
Pen p = new Pen(Color.Tomato, 2);
g.FillEllipse(Brushes.Blue, positionCursor.X, positionCursor.Y, 20, 20);
g.DrawEllipse(p, pt.X, pt.Y, 20, 20);
p.Dispose();
}
}
den Stift außerhalb der Schleife Erstellen, in einem [Verwendung] (https://msdn.microsoft.com/en-us//library/yh598w02.aspx) Erklärung. Zum Beispiel 'using (var pen = neuer Stift (Color.Tomato, 2) {/ * Rest von Code * /}'. Die 'using' Anweisung ruft die' Dispose' Methode für das Objekt in der richtigen Weise auf und (wenn (Sie verwenden es wie oben gezeigt) Es bewirkt auch, dass das Objekt selbst außerhalb des Geltungsbereichs verschwindet, sobald "Dispose" aufgerufen wird. Innerhalb des "using" -Blocks ist das Objekt schreibgeschützt und kann nicht geändert oder neu zugewiesen werden. –