晚上好。
我正在尝试使用 setRotation -方法在画布上旋转一条线,并且效果很好,除非您想在同一画布上绘制另一个形状。使用 Canvas 的 concat 方法后,整个画布将被旋转,比如说,逆时针/顺时针旋转 30 度。这就是问题所在。我只想旋转线条,不想旋转此画布或整个画布上的任何其他形状。我发现位图可以用矩阵来绘制,但是看起来很麻烦和笨拙。另外,有人建议为 Canvas 设置一个新矩阵,事实上,这个提议也不管用。
所以,这个问题听起来很简单,如何在不使用 OpenGl 的情况下旋转画布上唯一的一个形状并影响画布上的其他形状?
提前感谢您的回答!
这是带有注释和其他内容的代码:
@Override
public void onDraw(Canvas canvas)
{
int startX, startY, stopX, stopY;
startY = stopY = 100;
startX = 100;
stopX = 200;
this.paint = new Paint();
//this.path = new Path();
this.matrix = canvas.getMatrix();
this.paint.setColor(Color.BLUE);
this.paint.setStrokeWidth(4);
this.matrix.setRotate(180, startX, startY);
canvas.concat(this.matrix);
/*this.matrix.setTranslate(startX, 0);
canvas.concat(this.matrix);*/
canvas.drawLine(startX, startY, stopX, stopY, this.paint);
canvas.setMatrix(new Matrix());
//canvas.drawCircle(200, 200, 50, paint);
}