0

bg を含む ImageView にスピードメーターを描画しています。このコードを目盛りと値に使用します

    for (int i = 0; i < 270; i += 5) {
        if (i % 30 == 0) {
            scalePaint.setStrokeWidth(2f);
            canvas.drawLine(3.55f * wQuarter, 2 * hQuarter,
                    3.78f * wQuarter, 2 * hQuarter, scalePaint);
            canvas.drawText(String.valueOf(i), 3.5f * wQuarter,
                    2f * hQuarter, scalePaint);


        } else {
            scalePaint.setStrokeWidth(1.5f);
            canvas.drawLine(3.65f * wQuarter, 2 * hQuarter,
                    3.78f * wQuarter, 2 * hQuarter, scalePaint);

        }
        canvas.rotate(5f, 2 * wQuarter, 2 * hQuarter);
    }

目盛りは必要に応じて描画されますが、問題はテキストもキャンバスとともに回転することです。回転をリセットしながらテキストの位置を維持するにはどうすればよいですか? そのほとんどは上下逆さままたは +90 -90 です

ここにありますここに画像の説明を入力

4

1 に答える 1

0

canvas.save() を使用して、キャンバスに影響を与える変数 (回転、歪みなど) のステータスを保存し、次に canvas.restore() を使用してそのステータスに戻ることができます。
したがって、これを行うには、 for ループの内容を少し再配置する必要があります。

canvas.save();
canvas.rotate(...);
{draw the line}
canvas.restore();
canvas.drawText(...);
于 2013-05-13T22:47:47.617 に答える