У меня есть приложение, в котором вы можете рисовать некоторые фигуры, ловить их по вершинам и перемещать вершину. Я храню вершины фигур в List
и перерисовывает весь список объектов (когда вершина поймает и перемещает мышь) в растровом изображении, которое назначено PictureBox.Image
. Когда я добавляю более 5 фигур, движущаяся вершина отстает. Вот фрагмент кода: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;
}
Если это так, чтобы его вставить? Я пытался установить graphic.Clear(Color.Transparent)
, но изменить размер растрового изображения не удалось (функция используется при изменении размера окна).
Любые советы?
Возможный дубликат [C# WinForms - Любой, кто знает библиотеку C# C#, не SLOW GDI +] (http://stackoverflow.com/questions/6391911/c-sharp-winforms-anyone-know-of-ac-sharp- GDI-библиотека-не-медленно ИГРЫ) –