现在遇到了一个问题困扰:将目标图片多次缩放后,累加的缩放比例和偏移坐标计算都会产生比较大的数据偏移,造成无法正确定位当前图片的缩放比例,和图片的显示大小。请知道如果处理的朋友不吝赐教,多谢!

解决方案 »

  1.   

     ImageView通过SetImageMatrix进行图片缩放屡见不鲜。但是如何获得当前缩放图片的位置信息呢?用ImageState存储图片绘制信息:public class ImageState { 
        private float left; 
        private float top; 
        private float right; 
        private float bottom; 
    } //然后获取ImageView的matrix,根据matrix的getValues获得3x3矩阵。Matrix matrix = mImageViewMap.getImageMatrix(); 
    Rect rect = mImageViewMap.getDrawable().getBounds(); 
    float[] values = new float[9]; 
    matrix.getValues(values); 
    ImageState mapState = new ImageState(); 
    mapState.Left(values[2]); 
    mapState.Top(values[5]); 
    mapState.Right(mapState.Left() + rect.width() * values[0]); 
    mapState.Bottom(mapState.Top() + rect.height() * values[0]); 
    //这样,ImageState中存放的是mImageViewMap中的图片四个边的值。通过ImageState可以计算点击ImageView对应图片的像素点!本文出自 “移动开发” 博客,请务必保留此出处http://changyiyao.blog.51cto.com/2531539/581638【因例子无法编译通过,已在原文基础进行了调整】
      

  2.   

    【前面代码有误,修正如下】用ImageState存储图片绘制信息:public class ImageState {  
      private float left;  
      private float top;  
      private float right;  
      private float bottom;  
    } //然后获取ImageView的matrix,根据matrix的getValues获得3x3矩阵。Matrix matrix = mImageViewMap.getImageMatrix();  
    Rect rect = mImageViewMap.getDrawable().getBounds();  
    float[] values = new float[9];  
    matrix.getValues(values);  
    ImageState mapState = new ImageState();  
    mapState.Left = values[2];  
    mapState.Top = values[5];  
    mapState.Right = mapState.Left() + rect.width() * values[0];  
    mapState.Bottom = mapState.Top() + rect.height() * values[0];  
    //这样,ImageState中存放的是mImageViewMap中的图片四个边的值。通过ImageState可以计算点击ImageView对应图片的像素点!
      

  3.   

    通过ImageState怎么计算点击ImageView对应图片的像素点,求指教
      

  4.   

    通过ImageState怎么计算点击ImageView对应图片的像素点,求指教