欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

android Matrix and ImageView

程序员文章站 2022-07-14 16:07:52
...
imageView.getImageMatrix()  
float[] values = new float[9];  
matrix.getValues(values);  
  
float mtrans_x = values[Matrix.MTRANS_X];//左上顶点X坐标  
float mtrans_y = values[Matrix.MTRANS_Y];//左上顶点Y坐标  
float mscale_x = values[Matrix.MSCALE_X] ;//宽度缩放倍数  
float mscale_y = values[Matrix.MSCALE_Y] ;//高度缩放位数  
  
Drawable drawable = relativeImageView.getDrawable();  
Rect imageBounds = drawable.getBounds();  
  
//original height and width of the bitmap  
int intrinsicHeight = drawable.getIntrinsicHeight();  
int intrinsicWidth = drawable.getIntrinsicWidth();  
              
Log.i("@@@", "intrins:" + intrinsicHeight + "  " + intrinsicWidth);  
  
//height and width of the visible (scaled) image  
int scaledHeight = imageBounds.height();  
int scaledWidth = imageBounds.width();  
              
Log.i("@@@", "bounds:" + scaledHeight + "  " + scaledWidth);  
//Find the ratio of the original image to the scaled image  
//Should normally be equal unless a disproportionate scaling  
//(e.g. fitXY) is used.  
float heightRatio = intrinsicHeight / scaledHeight;  
float widthRatio = intrinsicWidth / scaledWidth;  
              
Log.i("@@@", "ratio:" + heightRatio + "  " + widthRatio);  
//do whatever magic to get your touch point  
//MotionEvent event;  
  
//get the distance from the left and top of the image bounds  
float scaledImageOffsetX = event.getX() - imageBounds.left;  
float scaledImageOffsetY = event.getY() - imageBounds.top;