我创建一个特定大小的矩形,现在我想将它旋转到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);
答案 0 :(得分:15)
要绘制旋转的矩形,您需要在绘图之前旋转画布(如果您正在绘制任何其他内容,则将其向右旋转至右侧)。 Canvas.rotate()
只是改变画布的变换矩阵,它转换调用后绘制的形状。
canvas.save();
canvas.rotate(45);
canvas.drawRect(166, 748, 314, 890, paint);
canvas.restore();
Path.Direction与旋转变换无关。来自docs:
指定闭合形状(例如rects,ovals)的方向 被添加到路径中。
答案 1 :(得分:5)
如果你想从(x,y)
点画一些东西,你必须围绕(x,y)
点旋转画布。为此,您应该使用
canvas.rotate(45,x,y);
所以,
canvas.save();
canvas.rotate(45,x,y);
//all drawing from (x,y) point
canvas.restore();
答案 2 :(得分:0)
正确的方法应该是这样的:
Path path = new Path();
path.addRect(166, 748, 314, 890, Path.Direction.CW);
canvas.save(); // first save the state of the canvas
canvas.rotate(45); // rotate it
canvas.drawPath(path, paint); // draw on it
canvas.restore(); // restore previous state (rotate it back)