私はアンドロイド用のアプリを書いていますが(これは一般的な質問だと思いますが)、スクロールしてズームできる大きな画像を(ImageViewに)表示する必要があります。タッチイベントをキャプチャしてマトリックス変換を実行することで、スクロールを機能させることができました。現在、ズームに取り組んでいます。
単純に画像にスケール変換を適用すると、画面の左上隅である原点が拡大されます。画面中央を拡大したい。私が読んだことから、これは、原点を画面の中心にするための変換が必要であることを意味します。必要なのは次のようなものだと思います-簡単にするために、画面の中心が(5、5)であると仮定します...
-Translate by (-5, -5)
-Scale by the zoom factor
-Translate by (+5, +5)*zoomfactor
残念ながら、これはうまくいかないようです - ズームはどこにでも行くようですが、中心に...誰か助けてくれませんか?
編集:これは現在機能するコードです
Matrix zoommatrix = new Matrix();
float[] centerpoint = {targetimageview.getWidth()/2.0f, targetimageview.getHeight()/2.0f};
zoommatrix.postScale(zoomfactor, zoomfactor, centerpoint[0], centerpoint[1]);
zoommatrix.preConcat(targetimageview.getImageMatrix());
targetimageview.setImageMatrix(zoommatrix);
targetimageview.invalidate();