为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕运维8079593 2019-12-13 15:10:19
在我的应用中,我需要让用户检查一些照片的眼睛。在OnTouchListener.onTouch(...)中,我获得了ImageView的坐标。如何将该坐标转换为被触摸的位图上的点?
查看完整描述

3 回答

?
繁星淼淼

TA贡献1775条经验 获得超11个赞

这至少对我来说适用于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;

}



查看完整回答
反对 回复 2019-12-14
?
明月笑刀无情

TA贡献1828条经验 获得超4个赞

除了考虑由于填充而产生的偏移量(边距是布局的一部分,它是视图外部的空间,不必考虑),如果缩放图像,则可以获取图像矩阵(ImageView.getImageMatrix())来缩放坐标。


编辑:您可以获取x / y比例因子和转换量,获取值数组并使用相应的索引常量:


float[] values;

matrix.getValues(values);


float xScale = values[Matrix.MSCALE_X];

请注意,翻译不包括填充,您仍然需要单独考虑。当有一些“空白”空间时,例如在FIT_CENTER缩放中使用转换。



查看完整回答
反对 回复 2019-12-14
  • 3 回答
  • 0 关注
  • 390 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信