【发布时间】:2014-12-26 08:03:34
【问题描述】:
我正在处理图像,制作一个允许用户在图像上放置标签(如 Facebook 照片标签)的功能。我有一个可缩放的 ImageView(使用 Mike Ortiz's TouchImageView)作为背景图像,还有一些 ImageViews 作为图像标签。
每个标签都有X和Y位置,在正确的位置显示背景图片和图片标签都没有问题。但是,当用户触发双指缩放时,背景图像的位置会发生变化。这意味着,每个图像标签的位置也必须根据当前背景图像的缩放级别和滚动位置进行更改/更新。
我目前正在使用这种方法:
float currentZoom = mImageView.getCurrentZoom();
float zoomedX = x / currentZoom;
float zoomedY = y / currentZoom;
但是当我尝试时,它完全出错了。谁能帮我找到正确的方法/方程式?
编辑:
我尝试使用 Matrix.mapPoints(),但我不明白这个矩阵如何帮助我解决问题。这是一张更好解释的图片:
【问题讨论】:
-
使用 Matrix.mapPoints()
-
我之前试过。它给了我 3x3 矩阵,存储在 float[] 中。我可以从那里获得图像坐标及其缩放级别。但这并不能解决我的问题。图片缩放滚动后如何找到图片标签的坐标?
-
正如我所说,使用 Matrix.mapPoints() 使用两个浮点数,因此输入数组的长度为 2
-
尝试矩阵 m = tiv.getImageMatrix();浮动[] pts = {0, 0}; m.mapPoints(pts);并查看“pts”中的内容
-
我将您的代码放在我的代码中的“缩放侦听器”中。当我进行缩放时(缩放比例为 1.0941195),
float[] pts给了我[0] = -33.788258和[1] = 4.5877075。你能解释一下这些价值观吗?
标签: java android image math pinchzoom