Ich habe eine Anwendung, in der Sie einige Formen zeichnen können, fangen sie durch Scheitelpunkte und verschieben Sie die Scheitelpunkte. Ich speichere Vertices eines Shapes in der List
und zeichne die gesamte Liste der Objekte (wenn der Verticetfang und die Maus bewegt werden) in der Bitmap, die PictureBox.Image
zugewiesen ist. Wenn ich mehr als 5 Formen hinzufüge, ist die bewegliche Ecke nacheilend. Hier ist ein Stück Code:Bitmap Repaint in Picturebox Lagging
private void DrawFullList()
{
if (pictureBox2.Image != null)
{
pictureBox2.Image.Dispose();
g.Dispose();
}
graphic = new Bitmap(pictureBox2.Width, pictureBox2.Height);
g = Graphics.FromImage(graphic);
pictureBox2.Image = graphic;
for (int i = 0; i < PointsList.Count; i++)
Draw(BrushList[i], PointsList[i]);
}
private void Draw(Brush brush, Point[] points)
{
Pen PathPen = new Pen(brush);
PathPen.Width = 3;
if (points.Length == 2)
g.DrawLine(PathPen, points[0], points[1]);
else
g.FillPolygon(brush,points);
pictureBox2.Image = graphic;
}
Wenn es trotzdem zu verdunkeln? Ich habe versucht, graphic.Clear(Color.Transparent)
, aber es gab keine Möglichkeit, die Größe der Bitmap zu ändern (die Funktion wird verwendet, wenn wir die Größe des Fensters ändern).
Irgendwelche Tipps?
Mögliche Duplikate von [C# WinForms - Wer weiß von einer C# GDI-Bibliothek nicht SLOW GDI +] (http://StackOverflow.com/Questions/6391911/c-sharp-winforms-anyone-know-of-ac-sharp- gdi-library-nicht-langsam-gdi) –