如何将图像视图的坐标转换为位图的坐标?

在我的应用中,我需要让用户检查一些照片的眼睛。在OnTouchListener.onTouch(...)中,我获得了ImageView的坐标。


如何将该坐标转换为被触摸的位图上的点?


慕运维8079593
浏览 370回答 3
3回答

繁星淼淼

这至少对我来说适用于API 10+:final float[] getPointerCoords(ImageView view, MotionEvent e){    final int index = e.getActionIndex();    final float[] coords = new float[] { e.getX(index), e.getY(index) };    Matrix matrix = new Matrix();    view.getImageMatrix().invert(matrix);    matrix.postTranslate(view.getScrollX(), view.getScrollY());    matrix.mapPoints(coords);    return coords;}

明月笑刀无情

除了考虑由于填充而产生的偏移量(边距是布局的一部分,它是视图外部的空间,不必考虑),如果缩放图像,则可以获取图像矩阵(ImageView.getImageMatrix())来缩放坐标。编辑:您可以获取x / y比例因子和转换量,获取值数组并使用相应的索引常量:float[] values;matrix.getValues(values);float xScale = values[Matrix.MSCALE_X];请注意,翻译不包括填充,您仍然需要单独考虑。当有一些“空白”空间时,例如在FIT_CENTER缩放中使用转换。
打开App,查看更多内容
随时随地看视频慕课网APP