3

Canvas の回転メソッドのドキュメントには、度パラメーターは「回転する量 (度単位)」であると記載されています。しかし、私の経験では、これは誤解を招くものです。たとえば、ビットマップが正規の直立方向 (つまり、12:00 の theta = 0) にあるときに、rotate(45) を呼び出すと、ビットマップは 0 に対して 45 度忠実に回転します。を回転させても(45)、画像は動かない[ように見える]。次に、rotate(-45) を呼び出すと、ビットマップは元の方向に戻りませんが、代わりに 0 に対して -45 度回転します。つまり、度パラメーターは絶対です (「45 度に回転」ドキュメントが示すように、相対的ではありません(「45度回転」)。これはまさに私が望んでいないことです。

特定の方向から、ビットマップを+/- x 度回転できるようにしたいと考えています。ここで、+ はもちろん時計回りの回転です。これを偽造する 1 つの方法は、次のローテーションのためにローテーションを「新しい 0」にすることです (つまり、実質的に 12:00 を占めます)。私の質問は次のとおりです。これを行うにはどうすればよいですか、または、私が望むことを達成するためのより良い方法はありますか?

どうもありがとう。

4

2 に答える 2

2

単純なアプローチの 1 つは、最後の回転を変数として保存し、それに +/- 次の回転を格納することです。もちろん、360 を超えないように注意してください。

于 2011-05-18T23:16:46.167 に答える
1

あなたcanvas.setMatrix(canvas.getMatrix())が行ったすべての変更を「保存」して、「新しい0」を回転させた場所を作成すると思います。しかし、dbrysonの提案は、あなたが言及した目的にとって経済的なものです。

于 2011-05-18T23:21:09.307 に答える