捏缩放后,相对于图像的触摸点坐标

时间:2012-09-05 10:10:01

标签: android pinchzoom

如何在缩放图像后计算相对于图像的坐标? 要缩放图像,我按照网址https://github.com/MikeOrtiz/TouchImageView/blob/master/src/com/example/touch/TouchImageView.java

如果我们在Zoom之前的特定点触摸图像,则相应的值为

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();

我得到的接触点与屏幕有关。

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

谢谢&问候 迷你。

2 个答案:

答案 0 :(得分: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 :(得分: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]));