【问题标题】:Touch point coordinates with respect to Image after pinch zoom捏缩放后相对于图像的触摸点坐标
【发布时间】:2012-08-30 00:49:12
【问题描述】:

缩放图像后如何计算相对于图像的坐标? 为了放大图片,我点击了网址: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();

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

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

感谢和问候 迷你。

【问题讨论】:

    标签: android pinchzoom


    【解决方案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]));
    

    【讨论】:

      【解决方案2】:

      我们可以根据图像大小通过计算相对点来计算

      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];
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-11-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-08-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多