javascript - 在触摸设备上捏合缩放

标签 javascript android ios canvas coffeescript

我在 HTML5 Canvas 中呈现了一个图形。到目前为止,工作还不错。现在我需要在触摸设备的图形上实现捏合缩放。逻辑是当两个手指分开时图形放大,当手指一起移动时图形缩小。在这种情况下,我们需要不断更新轴值。这里的问题是我们如何获得两个手指各自的 X 和 Y 轴值,然后计算要完成的缩放量。例如,对于使用鼠标进行缩放,我们可以在鼠标按下时获得起始 X 和 Y 值,在鼠标弹起时我们获得结束 X 和 Y 轴值。使用 X 轴和 Y 轴的起始值和结束值,可以相应地缩放图形。 Canvas 不应放大/缩小。放大可以是无限的,但缩小将是直到图形的默认绘图。任何想法或帮助都会非常可观。我没有得到正确的计算。

最佳答案

我已经通过以下方式实现了它。欢迎提出任何建议。

首先,我获取了开始时两个手指触摸的屏幕坐标,并通过计算它与最顶部和最左侧位置的距离将其转换为相应的 View 坐标。之后,我按以下方式计算了 X 轴的比例和新坐标。

让 d1 和 d2 是初始/开始触摸的数据空间坐标。 newx1 和 newx2 是新触摸的 x 位置。 screenW 是当前屏幕宽度(即屏幕空间中绘图的宽度)。

然后 规模 = (d2 - d1)/(newx2 - newx1)

如果我们使用 newd1、newd2 来表示我们尝试计算的新数据范围的最小值和最大值:

newd1 = d1 - newx1 * 比例

newd2 = newd1 + screenW * 比例

类似地,我们可以计算新数据范围的 Y 轴最小值和最大值。

关于javascript - 在触摸设备上捏合缩放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22555383/

相关文章:

javascript - 缩小比。可读性困惑

javascript - 动态创建的元素上的事件绑定(bind)?

ios - "Safari cannot open the page because the address is invalid"在卸载应用程序的情况下访问 Branch 链接时出现

ios - RealmSwift LinkingObjects(fromType : Class. self, property: "property") 返回 nil

ios - 我可以发布一个未完成的应用程序吗?

javascript - 通过 JavaScript 移动 HTML Canvas

javascript - onchange 函数到输入文本 JQuery 数组

android - Gradle:在库项目中找不到actionbarsherlock @aar

android - PagerSlidingTabStrip 实现指南

安卓工作室 : Trouble connecting Huawei device to Android Studio?