ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

java – Android – 在Zoomable图像视图顶部调整图像视图位置

2019-07-08 14:24:33  阅读:240  来源: 互联网

标签:java android image math pinchzoom


我正在研究图像,制作一个允许用户在图像上放置标签的功能(如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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有