android Matrix and ImageView

阅读更多
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;  

你可能感兴趣的:(android Matrix and ImageView)