【发布时间】:2011-07-08 11:59:31
【问题描述】:
我已将预缩放位图设置为 ImageView 的源。然后我阅读了ImageView 的矩阵,并通过matrix.postTranslate(shiftX, shiftY) 移动了 ImageView 的位图。
现在我想放大/缩小图像,同时将ImageView 的中心保持在缩放之前位图的同一点。
如果我尝试使用matrix.postScale(zoom, zoom) 放大图像,我想要保持的点(蓝点)会移动到其他位置(紫点)。
我尝试了几种不同的方法来将位图移回,但我无法让它正常工作。我知道初始位图大小、ImageView 大小、虚线标记的距离。尝试计算所需的班次并在之后使用matrix.postTranslate(-zoomshiftX, -zoomshiftY),但没有正确班次。
即使发现,在 matrix.postScale() 函数和尝试 matrix.postTranslate(-zoomshiftX/zoom, -zoomshiftY/zoom) 之后,底层位图的像素数没有改变 - 但仍然没有运气。
如何实现这样的缩放?
【问题讨论】:
-
我通过使用 4 个参数 matrix.postScale() 并为最后两个参数输入类似 View_width/2 和 View_height/2 的内容实现了居中缩放。没有意识到这最后两个参数可能是指视图的像素,而不是位图的像素
标签: android android-image android-imageview