当我绘制很多线条时,应用程序需要很长时间才能完成绘图。我的目标是连接a1 []中的点以形成一条线。有更快的方法吗?请帮忙!
> $ for (int i = 0; i < x.length - 1; i++) {
> _canvas.drawLine(a1[i].x, a1[i].y, a1[i + 1].x, a1[i + 1].y,_paint);}
答案 0 :(得分:1)
使用Canvas.drawLines(float[] pts, Paint paint);
我使用Canvas.drawLines
而不是Canvas.drawLine
将绘图时间减少了一半。
我必须绘制12条线,每条线具有5000个点,并且使用此代码绘制的时间为2393毫秒,而不是使用Canvas.drawLine()
方法的6000毫秒。
int lineIndex = 0;
float[] lines = new float[x.length * 4];
for (int i = 0; i < x.length; i++)
{
lines[lineIndex++] = a1[i].X;
lines[lineIndex++] = a1[i].Y;
lines[lineIndex++] = a1[i + 1].X
lines[lineIndex++] = a1[i + 1].y;
}
_canvas.drawLines(lines, _paint);
答案 1 :(得分:-1)
首先尝试创建Path,然后调用_canvas.drawPath():
Path p = new Path();
p.moveTo(a1[0].x, a1[0].y);
for (int i = 1; i < x.length; i++) {
p.lineTo(a1[i].x, a1[i].y);
}
_canvas.drawPath(p, _paint);