こんばんは。
setRotation -method を使用してキャンバス上の線を回転させようとしていますが、同じキャンバスに別の形状を描画しない限り、完全に機能します。Canvas の concat メソッドを使用した後、キャンバス全体が、たとえば反時計回り/時計回りに 30 度回転します。そして、これが問題です。線だけを回転させたいのですが、このキャンバスまたはキャンバス全体で他の図形を回転させたくありません。ビットマップはマトリックスで描画できることがわかりましたが、面倒でぎこちなく見えます。また、キャンバスに新しいマトリックスを設定するという提案がありましたが、実際、この提案はどちらも機能しません。
質問は簡単に聞こえますが、OpenGl を使用せずにキャンバス上の 1 つの図形だけを回転させ、キャンバス上の他の図形に影響を与えることはできないでしょうか?
事前にご回答いただきありがとうございます。
コメントやその他のものを含むコードは次のとおりです。
@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);
}