0
的速度,所以我有一些標準,有序的點列表:增加畫線
List<System.Drawing.Point> points = new List<System.Drawing.Point>();
System.Drawing.Point prev = new System.Drawing.Point();
,我使用
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個點之間畫線這段代碼對於908(寬)x297(高)像素圖像需要2-4秒。
我該怎麼做才能提高速度?
編輯:發表最終結果如下。雖然第一種方法仍然允許更好地處理繪圖。
using (Graphics dr = Graphics.FromImage(img))
dr.DrawLines(bluePen, points.ToArray());
強烈建議將'using'語句移動到'for'之外 –
爲什麼標記爲[tag:wpf]? –
@GlorinOakenfoot +1給Glorin的評論。您正在構建和處理每個循環迭代中的圖形對象 - 將它移到for之外,它應該表現更好。 Andreas的回答也是一個好主意。 – Clint