android如何旋转画布rect

Mat*_*Yus 9 android canvas path rotation rect

我创建一个特定大小的矩形,现在我想将它旋转到45度,我使用canvas.rotate,矩阵,但不工作.如何在android中旋转画布的正确方法?我对Path.Direction.CW感到好奇,是否用于轮换?但我没有在Path()中看到任何旋转功能

    paint.setAntiAlias(true);
    paint.setStrokeWidth(2);
    paint.setColor(Color.BLUE);
    paint.setAlpha(75);

    Path path = new Path();
    path.addRect(166, 748, 314, 890, Path.Direction.CW);
    canvas.rotate(45);
    canvas.drawPath(path, paint);
Run Code Online (Sandbox Code Playgroud)

Ale*_*lex 16

要绘制旋转的矩形,您需要绘制之前旋转画布(如果您正在绘制任何其他内容,则将其向右旋转至右侧).Canvas.rotate()只是改变画布的变换矩阵,它转换调用绘制的形状.

canvas.save();
canvas.rotate(45);
canvas.drawRect(166, 748, 314, 890, paint);
canvas.restore();
Run Code Online (Sandbox Code Playgroud)

Path.Direction与旋转变换无关.来自文档:

指定将闭合形状(例如,rects,ovals)添加到路径时的方向.


Meh*_*loo 5

如果要从(x,y)点绘制东西,则必须围绕(x,y)点旋转画布。为此,您应该使用

canvas.rotate(45,x,y);
Run Code Online (Sandbox Code Playgroud)

所以,

canvas.save();
canvas.rotate(45,x,y);
//all drawing from (x,y) point
canvas.restore();
Run Code Online (Sandbox Code Playgroud)