次の問題があります: 現在、SurfaceView 内で絵を描いています。また、ユーザーはこの絵の上に絵を描くことができます。これにより、ドロー「フィギュア」はパスオブジェクトとして扱われます。さらに、ユーザーは画像をパンしたりズームしたりできます。ズームとパンの処理は、マトリックスを使用して行われます。画像とすべてのパス オブジェクトには、独自のマトリックスがあります。
たとえば、ユーザーがアプリを起動すると、画像が表示されます。その後、ユーザーはパス オブジェクトを次々と追加できます。すべてのオブジェクトに対して新しいマトリックスを作成します。たとえば、ユーザーが拡大すると、画像だけでなくパス オブジェクトも拡大されます。
私の目標は、画像のズームインまたはズームアウト中にパスオブジェクトが追加された場合、パスオブジェクトをタッチした位置に追加する必要がありますが、すでに描画されている他のオブジェクトのスケールに合わせてスケーリングする必要があります。つまり、パス オブジェクトを追加すると、既存のオブジェクトと同じスケールになるはずですが、新しい位置に表示されるはずです。
これまで、問題を解決するためにさまざまな方法を試しましたが、何もうまくいきませんでした:
まず、すべてのパス オブジェクトを独自にスケーリングするのではなく、1 つのマトリックスで Canvas をスケーリングしました。しかし、その後、追加されたパス オブジェクトは、画像を拡大すると間違った位置に表示されました。
次に、現在のスケールを取得しようとしました。その後、作成時にパス オブジェクトをスケーリングしました。これもうまくいきませんでした。メソッド preScale、postScale、setScale のいずれかではありません... パス全体が間違っていたか、間違った位置に再び表示されました。
誰かが解決策を知っていますか?