プリビューされたビットマップをImageViewのソースとして設定しました。それから私はImageView
の行列を読んで、matrix.postTranslate(shiftX, shiftY)
経由でImageViewのビットマップをシフトしました。同じ場所に中心点を維持しながらImageViewの画像をスケーリングする
縮尺の前であったビットマップの同じポイントにImageView
の中心を維持しながら、ズームイン/ズームしてイメージしたいと考えています。
matrix.postScale(zoom, zoom)
で画像を拡大しようとすると、維持したい(青色の点)が他の場所(紫色の点)に移動することを示す。
私はビットマップを戻すためにいくつかの異なる方法を試しましたが、正しく動作するようにはできません。私は最初のビットマップサイズ、ImageViewサイズ、点線でマークされた距離を知っています。後で必要なシフトを計算してmatrix.postTranslate(-zoomshiftX, -zoomshiftY)
を使用しようとしましたが、正しくシフトしません。
Matrix.postScale()関数の後に、その基礎となるビットマップのピクセル数が変わっていて、matrix.postTranslate(-zoomshiftX/zoom、-zoomshiftY/zoom)を試してみました。
どのようにズームを達成できますか?
1時間aveは4引数matrix.postScale()を使用し、最後の2つの引数に対してView_width/2とView_height/2のようなものを入力することで、中心のズーミングを実現しました。この最後の2つの引数は、ビットマップのものではなく、Viewのピクセルを参照する可能性があります。 – wilkas