2015-10-28 168 views
0

我没有什么问题。
我在找一张图片,转换为位图并用此填写图像查看位图如何从imageView中获取位图的实际坐标(X,Y)Android

所以问题是,如何获取此位图的实际坐标(X,Y)?
为了更好的说明,我附上了一张图片:
What i have
如图所示,例如,我得到了一个自定义分辨率的图像,用户可以通过黄点创建一个透视图
所以我需要知道,如何从ImageView获取真正的位图坐标。

我在当前时刻取得了什么(但这种做法是不正确的):
我把宽度/高度从ImageView的和本决议重新创建新的位图。

Bitmap bt = Bitmap.CreateScaledBitmap(BitmapFactory.DecodeResource(Activity.Resources, Resource.Drawable.test),800,1420,false); //800 width 1420 height 
       imgView.SetImageBitmap(bt); 

通过实施TouchListener(方法的getX()/杰蒂()),我拿分的COORDS(黄圈的那覆盖在位图),而问题是,这些坐标不正确。

另外它对我来说很有趣,当我通过ImageView上的ScaleType.FitXY来扩展位图时(它可能需要真正的位图坐标)?

那么我怎样才能实现我的目标?

+0

你看到[这](http://stackoverflow.com/questions/4933612/how-to-convert-coordinates-of-the-image-查看到该坐标的最位图)? – Poger

+0

@Poger是的,我正在尝试实施。你有他人的想法吗? :) – XTL

+0

请参阅getImageMatrix并阅读矩阵文档 – pskink

回答

1

使用ImageView#getImageMatrix,这样的事情:

final ImageView iv = new ImageView(this); 
    setContentView(iv); 
    // setup your image here by 
    // calling for example iv.setImageBitmap() 
    // or iv.setImageDrawable() 
    // or iv.setImageResource() 
    View.OnTouchListener otl = new View.OnTouchListener() { 
     Matrix inverse = new Matrix(); 
     @Override 
     public boolean onTouch(View v, MotionEvent event) { 
      iv.getImageMatrix().invert(inverse); 
      float[] pts = { 
        event.getX(), event.getY() 
      }; 
      inverse.mapPoints(pts); 
      Log.d(TAG, "onTouch x: " + Math.floor(pts[0]) + ", y: " + Math.floor(pts[1])); 
      return false; 
     } 
    }; 
    iv.setOnTouchListener(otl); 
+0

@psink thx,它的工作原理! – XTL

+0

欢迎您... – pskink