有人可以确切地解释画布围绕点的旋转是如何工作的吗?
我有线条,我想绘制平行于每行的文本。我已经计算出了计算直线角度及其中心点所需的三角函数。
当我尝试围绕线条的起点旋转画布,然后绘制文本并恢复时,我总是得到奇怪的偏移,这显然意味着我没有安静地了解旋转是如何工作的......
有人可以解释一下当您围绕一个点旋转画布时会发生什么,以及然后在坐标 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();
}
}
现在我希望一切都应该清楚画布旋转是如何工作的......