Поэтому у меня есть список пунктов, заказанных некоторые критерии:Увеличение скорости рисования линий
List<System.Drawing.Point> points = new List<System.Drawing.Point>();
System.Drawing.Point prev = new System.Drawing.Point();
и я рисование линий между ближайшими точками 2 из этого списка с помощью
prev = points[0];
System.Diagnostics.Stopwatch s1 = System.Diagnostics.Stopwatch.StartNew();
for (int i = 1; i < points.Count; i++)
{
var pp = points[i];
using (Graphics dr = Graphics.FromImage(img))
{
dr.DrawLine(bluePen, prev.X, prev.Y, pp.X, pp.Y);
prev.X = pp.X;
prev.Y = pp.Y;
}
}
s1.Stop();
этот фрагмент кода занимает 2-4 секунды для изображения пикселов размером 908 (ширина) x297 (высота).
Что я могу сделать, чтобы улучшить скорость?
EDIT: Опубликовано конечный результат ниже. Хотя первый подход все же позволяет более тонко манипулировать чертежом.
using (Graphics dr = Graphics.FromImage(img))
dr.DrawLines(bluePen, points.ToArray());
Было бы настоятельно предложено переместить инструкцию 'using' за пределами вашего' for' –
. Почему это помечено тегом [tag: wpf]? –
@ GlorinOakenfoot +1 к комментарию Глорина. Вы создаете и размещаете графический объект на каждой итерации цикла - перемещаете его за пределы, и он должен работать лучше. Ответ Андреаса тоже неплохая идея. – Clint