10

特定のサイズの長方形を作成し、45 度回転させたいのですが、canvas.rotate、matrix を使用しましたが、機能しませんでした。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);
4

3 に答える 3

18

回転した四角形を描画するには、描画する前にキャンバスを回転する必要があります(他のものを描画している場合は、キャンバスを回転させて右側を上に戻します)。Canvas.rotate()キャンバスの変換マトリックスを変更するだけで、呼び出しに描画される形状が変換されます。

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

Path.Direction は、回転変換とは関係ありません。ドキュメントから:

閉じた形状 (四角形、楕円形など) がパスに追加されたときの向きを指定します。

于 2013-10-29T14:30:25.427 に答える
7

ポイントから何かを描きたい場合は、(x,y)ポイントを中心にキャンバスを回転させる必要があります(x,y)。これを行うには、使用する必要があります

canvas.rotate(45,x,y);

それで、

canvas.save();
canvas.rotate(45,x,y);
//all drawing from (x,y) point
canvas.restore();
于 2015-12-05T11:11:31.460 に答える
1

適切な方法は次のようになります。

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)
于 2013-08-06T09:49:29.087 に答える