java – Android – 在Zoomable图像视图顶部调整图像视图位置
作者:互联网
我正在研究图像,制作一个允许用户在图像上放置标签的功能(如Facebook照片标签).我有一个可缩放的ImageView(使用Mike Ortiz’s TouchImageView)作为背景图像,一些ImageViews作为图像标签.
每个标签都有X和Y位置,在正确位置显示背景图像和图像标签没有问题.但是,当用户触发捏缩放时,背景图像的位置会发生变化.这意味着,每个图像标签的位置也必须根据当前背景图像的缩放级别和滚动位置进行更改/更新.
我目前正在使用这种方法:
float currentZoom = mImageView.getCurrentZoom();
float zoomedX = x / currentZoom;
float zoomedY = y / currentZoom;
但是当我尝试时,它完全错了.谁能帮我找到正确的方法/方程式?
编辑:
我尝试使用Matrix.mapPoints(),但我不明白这个矩阵如何帮助我解决我的问题.这是一张图片,可以更好地解释:
解决方法:
我终于得到了答案(感谢pskink)!要获得图像上的确切标记位置,我们所要做的就是使用Matrix.mapPoints().但仅此一点就不会给新的X&缩放后的Y位置.我们必须乘以目前的X& Y位置使用当前缩放级别获得“后缩放位置”.
换一种说法:
Matrix matrix = mImageView.getImageMatrix();
float[] pts = {0, 0};
matrix.mapPoints(pts);
float newTagX = (tagX * currentZoom) + pts[0];
float newTagY = (tagY * currentZoom) + pts[1];
标签:java,android,image,math,pinchzoom 来源: https://codeday.me/bug/20190708/1403067.html