2

たくさんの線を描くと、アプリが描画を完了するのに時間がかかります。私の目標は、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);}
4

3 に答える 3

6

ドローラインを使用します。ポイントを float[] にパックし、行の各ポイントに対して 2 つのポイントを指定してから、次のようにします。

if (count >= 4) {
    if ((count & 2) != 0) {
        canvas.drawLines(pointlist, 0, count-2, linePaint);
        canvas.drawLines(pointlist, 2, count-2, linePaint);
    }
    else {
        canvas.drawLines(pointlist, 0, count, linePaint);
        canvas.drawLines(pointlist, 2, count - 4, linePaint);
    }
}

ここで、count は、ポイントの float[] で使用可能な長さの数です。ドローラインはセグメントごとに 4 つのフロートで移動しますが、そのようにずらすと、2 倍のメモリを無駄にすることなく目的の結果が得られ、必要に応じてポイントを効果的に移動できます。

于 2015-09-10T09:39:59.633 に答える
-1

最初にパスを作成してから、_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);
于 2012-04-18T23:16:30.327 に答える