所以我有一个按一些标准订购的点数列表:
List<System.Drawing.Point> points = new List<System.Drawing.Point>();
System.Drawing.Point prev = new System.Drawing.Point();
Run Code Online (Sandbox Code Playgroud)
我正在使用该列表中最接近的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();
Run Code Online (Sandbox Code Playgroud)
对于908(宽度)x297(高度)像素图像,这段代码需要2-4秒.
我该怎么做才能提高速度?
编辑:发布下面的最终结果.虽然第一种方法仍然允许更精细地操纵图纸.
using (Graphics dr = Graphics.FromImage(img))
dr.DrawLines(bluePen, points.ToArray());
Run Code Online (Sandbox Code Playgroud)