android – 如何在图像控件中获取位图图像的x和y坐标?

android – 如何在图像控件中获取位图图像的x和y坐标?,第1张

概述我在图像视图控件中有一个图像.由于图像的x和y坐标不断变化,用户可以对此图像执行平移和缩放.有没有办法找出图像控制中图像的当前设置x和y坐标?任何有关它的代码都会更有益. ImageView使用Matrix类进行缩放(缩放)和平移(平移).如果您可以获取矩阵,则可以检索缩放/平移视图的(左,上)坐标. 可缩放代码和可以在stackoverflow posts之一中使用pannable extend 我在图像视图控件中有一个图像.由于图像的x和y坐标不断变化,用户可以对此图像执行平移和缩放.有没有办法找出图像控制中图像的当前设置x和y坐标?任何有关它的代码都会更有益.解决方法 ImageVIEw使用Matrix类进行缩放(缩放)和平移(平移).如果您可以获取矩阵,则可以检索缩放/平移视图的(左,上)坐标.

可缩放代码和可以在stackoverflow posts之一中使用pannable extended imagevIEw

在该帖子中,您将看到扩展的ImageVIEw类将矩阵作为用于缩放/转换的成员变量.

您可以使用以下代码从矩阵中获取缩放/平移的ImagevIEw(实际上是位图)的边界.

RectF r = new RectF(); matrix.mapRect(r);Log.i(TAG,"Rect " + r.left + " " + r.top + " " + r.right + " " + r.bottom + " " + mOverAllScale + " ");

新添加的答案

要理解下面的代码,你需要通过这个link并理解.

翻译

当用户拖动图像时,屏幕坐标(绝对)和位图坐标不同步. [您写入位图的任何内容都会通过画布显示(在onDraw()中)]如果应用着色,用户会看到它应用于位图图像上的其他区域.要纠正此问题,您需要进行翻译.翻译会将用户输入坐标(屏幕坐标)更改为位图坐标(按用户的意图)
以下代码段可以帮助您进行翻译.

让用户输入坐标为(x,y)然后,

RectF r = new RectF(); matrix.mapRect(r);Log.i(TAG,"Rect " + r.left + " " + r.top + " " + r.right + " " + r.bottom + " " + mOverAllScale + " ");float newX =  x - r.left;float newY =  y - r.top;

您使用新的坐标代替(x,y).

缩放(缩放)

当用户捏入/捏出时;位图被缩小/放大.你必须观察原始位图不会改变,只从显示角度进行缩放.
这再次导致屏幕和位图之间的同步丢失.应用于屏幕的着色应反映在显示的图像中.
以下代码段可帮助您进行缩放.

// mScalingFactor shall contain the scale/zoom factorfloat scaledX = (event.getX() - r.left);float scaledY = (event.getY() - r.top);scaledX /= mScalingFactor;scaledY /= mScalingFactor;

词shash

总结

以上是内存溢出为你收集整理的android – 如何在图像控件中获取位图图像的x和y坐标?全部内容,希望文章能够帮你解决android – 如何在图像控件中获取位图图像的x和y坐标?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1131292.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-30
下一篇 2022-05-30

发表评论

登录后才能评论

评论列表(0条)

保存