1

缩放图像后如何计算相对于图像的坐标?要缩放图像,我遵循了 url: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();

我得到的接触点是关于屏幕的。

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

谢谢和问候迷你。

4

2 回答 2

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];
于 2012-11-20T10:40:48.907 回答
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]));
于 2017-03-08T11:01:10.797 回答