android如何旋转canvas矩形

我创build一个特定的大小的矩形,现在我想旋转到45度,我用canvas.rotate,matrix,但不工作。 如何在Android中旋转canvas的正确方法? 我很好奇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); 

要绘制一个旋转的矩形,您需要绘制之前旋转canvas(如果您正在绘制其他任何东西,则将其旋转回右侧)。 Canvas.rotate()只是改变canvas的变换matrix,它转换调用绘制的形状。

 canvas.save(); canvas.rotate(45); canvas.drawRect(166, 748, 314, 890, paint); canvas.restore(); 

Path.Direction与旋转变换无关。 从文档 :

指定闭合的形状(例如直angular,椭圆)在添加到path时的方向。

如果要从(x,y)点绘制某个东西,则必须绕(x,y)点旋转canvas。 为此,你应该使用

 canvas.rotate(45,x,y); 

所以,

 canvas.save(); canvas.rotate(45,x,y); //all drawing from (x,y) point canvas.restore(); 

正确的方法应该是这样的:

 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)