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 回答