2012-09-05 58 views
1

如何在缩放图像后计算图像的坐标? 放大图片我跟着网址:https://github.com/MikeOrtiz/TouchImageView/blob/master/src/com/example/touch/TouchImageView.java缩放后图像的触摸点坐标

如果我们触摸在特定点的图像缩放前则对应值

point:(3,2) 
top left corner of image:(0,0) 
top left corner of screen:(0,0) 
scale factors:(1.25,0.98) 

放大图像后:

如果我们拖动图像,直至图像左上角重合屏幕左上角角落里,触摸图像正是在相同的触摸点(捏前),然后

point:(540,220) 
top left corner of image:(0,0) 
top left corner of screen:(0,0) 
scale factors:(4.78,2.67) 

如果我们拖动图像,直至图像右上角不谋而合屏幕右上角的触摸图像正是在相同的触摸点(捏前),然后

point:(1080,340) 
top left corner of screen:(0,0) 
top left corner of image:(-2430,0) 
scale factors:(4.78,2.67) 

如果我们拖动图像,直至图像左下角与屏幕左下角触摸图像在相同的触摸准确一致点(前捏),然后

point:(670,80) 
top left corner of screen:(0,0) 
top left corner of image:(0,-890) 
scale factors:(4.78,2.67) 

如果我们拖动图像,直至图像右下角与屏幕右下角的触摸图像正是在同一接触点的重合,然后(捏)之前

point:(456,274) 
top left corner of screen:(0,0) 
top left corner of image:(-2430,-890) 
scale factors:(4.78,2.67) 

如果我们在屏幕上设定的图像[未设置任何角落]

point:(743,146) 
top left corner of screen:(0,0) 
top left corner of image:(-1280,-423) 
scale factors:(4.78,2.67) 

在上述所有情况下我得到的触摸事件的坐标

x_cord=event.getX(); 
y_cord=event.getY(); 

触摸点我得到的是相对于屏幕。

如何根据图像计算触摸点?

谢谢& Registers mini。

回答

1

我们可以通过根据图像尺寸

float[] values = new float[9]; 
matrix.getValues(values); 
x_coord = ((e.getX() - values[2])*scaleX)/values[0]; 
y_coord= ((e.gety() - values[5])*scaleY)/ values[4]; 
1

在我的情况我计算这些点如下计算相对点计算。这对某人会有帮助。

x = (event.getX()/values[Matrix.MSCALE_X] - (values[Matrix.MTRANS_X]/values[Matrix.MSCALE_X])); 
y = (event.getY()/values[Matrix.MSCALE_Y] - (values[Matrix.MTRANS_Y]/values[Matrix.MSCALE_Y]));