Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何在图像控制中获得位图图像的x和y坐标?_Android - Fatal编程技术网

Android 如何在图像控制中获得位图图像的x和y坐标?

Android 如何在图像控制中获得位图图像的x和y坐标?,android,Android,我在图像视图控件中有一个图像。由于图像的x和y坐标不断变化,用户可以对该图像执行平移和缩放。有没有办法找出图像控件中当前设置的图像x和y坐标?任何与之相关的代码都会更加有用。ImageView使用矩阵类进行缩放(缩放)和平移(平移)。如果您可以获得矩阵,则可以检索缩放/平移视图的(左、上)坐标 其中一个stackoverflow中提供了可缩放和可平移扩展imageview的代码 在这篇文章中,您将看到扩展ImageView类将矩阵作为用于缩放/转换的成员变量 您可以使用以下代码从矩阵中获取缩放/

我在图像视图控件中有一个图像。由于图像的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;