Android 如何在图像控制中获得位图图像的x和y坐标?
我在图像视图控件中有一个图像。由于图像的x和y坐标不断变化,用户可以对该图像执行平移和缩放。有没有办法找出图像控件中当前设置的图像x和y坐标?任何与之相关的代码都会更加有用。ImageView使用矩阵类进行缩放(缩放)和平移(平移)。如果您可以获得矩阵,则可以检索缩放/平移视图的(左、上)坐标 其中一个stackoverflow中提供了可缩放和可平移扩展imageview的代码 在这篇文章中,您将看到扩展ImageView类将矩阵作为用于缩放/转换的成员变量 您可以使用以下代码从矩阵中获取缩放/平移图像视图(实际上是位图)的边界Android 如何在图像控制中获得位图图像的x和y坐标?,android,Android,我在图像视图控件中有一个图像。由于图像的x和y坐标不断变化,用户可以对该图像执行平移和缩放。有没有办法找出图像控件中当前设置的图像x和y坐标?任何与之相关的代码都会更加有用。ImageView使用矩阵类进行缩放(缩放)和平移(平移)。如果您可以获得矩阵,则可以检索缩放/平移视图的(左、上)坐标 其中一个stackoverflow中提供了可缩放和可平移扩展imageview的代码 在这篇文章中,您将看到扩展ImageView类将矩阵作为用于缩放/转换的成员变量 您可以使用以下代码从矩阵中获取缩放/
RectF r = new RectF();
matrix.mapRect(r);
Log.i(TAG, "Rect " + r.left + " " + r.top + " " + r.right + " " + r.bottom + " " + mOverAllScale + " ");
新增答案
要理解下面的代码,您需要仔细阅读并理解
翻译
当用户拖动图像时,屏幕坐标(绝对坐标)和位图坐标将不同步。[您写入位图的任何内容都将通过画布显示(在onDraw()中)]如果应用着色,用户将看到它应用于位图图像的不同区域。要纠正这一点,您需要进行翻译。转换将用户输入坐标(即屏幕坐标)更改为位图坐标(如用户所愿)
下面的代码片段将帮助您进行翻译
让用户输入坐标为(x,y),然后
使用新坐标代替(x,y)
缩放(缩放)
当用户捏进/捏出时;位图被缩小/放大。您必须注意原始位图不会被更改,缩放仅从显示角度进行。
这再次导致屏幕和位图之间的同步丢失。应用在屏幕上的颜色应反映在显示的图像中。
下面的代码片段将帮助您进行缩放
// mScalingFactor shall contain the scale/zoom factor
float scaledX = (event.getX() - r.left);
float scaledY = (event.getY() - r.top);
scaledX /= mScalingFactor;
scaledY /= mScalingFactor;
Shash查看此链接可能会有所帮助。。。。。嗨@SHSH316,这只适用于我的翻译和缩放。轮换怎么样?你能帮我吗。这只是我的最后一个问题。非常感谢。@SHSH316 Log.i(标记“Rect”+r.left+“”+r.top+“”+r.right+“”+r.bottom+“”+mOverAllScale+“”);-r、 左/r.top/r.right/r.bottom这些值是以像素为单位的吗?
// mScalingFactor shall contain the scale/zoom factor
float scaledX = (event.getX() - r.left);
float scaledY = (event.getY() - r.top);
scaledX /= mScalingFactor;
scaledY /= mScalingFactor;