画布旋转



有人可以确切地解释画布围绕点的旋转是如何工作的吗?

我有线条,我想绘制平行于每行的文本。我已经计算出了计算直线角度及其中心点所需的三角函数。

当我尝试围绕线条的起点旋转画布,然后绘制文本并恢复时,我总是得到奇怪的偏移,这显然意味着我没有安静地了解旋转是如何工作的......

有人可以解释一下当您围绕一个点旋转画布时会发生什么,以及然后在坐标 X,Y 上绘制如何回移?

看到下面的类:

class V extends View {
    private Paint mPaint;
    public V(Context context) {
        super(context);
        mPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
        mPaint.setColor(0xffeeeeee);
        mPaint.setTextSize(24);
    }
    @Override
    protected void onDraw(Canvas canvas) {
        float x = 100;
        float y = 50;
        float dx = 60;
        float dy = 40;
        canvas.drawLine(x, y, x + dx, y + dy, mPaint);
        canvas.save();
        float degrees = (float) (180 * Math.atan2(dy, dx) / Math.PI);
        canvas.rotate(degrees, x, y);
        canvas.drawText("text", x, y, mPaint);
        canvas.restore();
    }
}

现在我希望一切都应该清楚画布旋转是如何工作的......

最新更新