java - 如何获取 ImageView 中可绘制图像的原点

标签 java android image

请参阅另外两个问题以供引用:

Get drawable displayed size after scaling

Trying to get the display size of an image in an ImageView

我现在可以获得缩放图像的大小,但我还想知道 ImageView 内缩放图像的原点 (0,0)。换句话说,图像 #1 内的哪个 x,y 位置对应于图像 #2 的 0,0?

http://image.noelshack.com/fichiers/2013/06/1360144144-sans-titre.png

最佳答案

如果你想知道drawable的(0,0)如何对应imageView的(x,y),你可以像这样使用imageView的变换矩阵来映射点

float[] drawableCoords = new float[] {0, 0};
imageView.getImageMatrix().mapPoints(drawableCoords);
float onViewX = drawableCoords[0];
float onViewY = drawableCoords[1];

您还可以反转该过程(通过创建倒置矩阵并在其上映射点来从 imageView 坐标映射到可绘制坐标

float[] viewCoords= new float[] {0, 0};
Matrix invertedMatrix = new Matrix()
imageView.getImageMatrix().invert(invertedMatrix);
invertedMatrix.mapPoints(viewCoords);
float onDrawableX= viewCoords[0];
float onDrawableY= viewCoords[1];

请注意,如果可绘制对象小于/大于 imageview,则在某些情况下转换后的坐标可能具有负坐标值。

关于java - 如何获取 ImageView 中可绘制图像的原点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18971864/

相关文章:

java - 在 Swing Java 中创建自定义列表

java - 如何调用fragment的onActivityResult

java - 使用 ThinkFree PDF Viewer 显示原始 PDF 数据的 Base64 编码字符串

java - 使用 ClassLoader 检索资源的路径

java - Socksifying Java ServerSocket - 如何处理

java - @ViewScoped 在开发模式下工作,但在生产模式下不起作用

java - 如何在 dropwizard 1.0.0 中获取 applicationContextPath

android - ListView 中每一行的背景

c# - 将字节转换为图像时出现错误“参数无效”

image - 确定两张几乎相同的照片之间的差异