如何在WPF中实现缩放

3
我正在尝试管理多点触控。因此,我正在尝试分离触摸的行为。假设用户想要缩放他们的图片,他们需要捏合以进行缩放。然而,两个触摸点之间距离过远时将无法缩放,如下图所示: enter image description here 我该如何分离它?是否有任何函数可以实现这一点?
敬礼, C.Porawat

2
这太疯狂了。如果我想使用两根手指呢?为什么你的应用要关心这个呢?买一个iPhone,花几天时间使用它; 它可以正确处理这种类型的事情。 - Cody Gray
我需要关注的原因是我必须管理许多来自许多触摸的事件。我试图分离每个触摸的行为。例如,当一个手指按下2秒钟时,菜单将出现。此外,当2个手指按下菜单时,第一个手指将获得它。但是,当2个手指按下时,这也意味着他们需要缩放。因此,我如何知道用户想要调用菜单还是缩放。这就是为什么我决定使用捏来区分调用菜单和缩放的原因。 - Porawat Chimcherdsin
@PorawatChimcherdsin 很棒的图表 +1 :) 双指轻点应被解释为双指向下按住250毫秒,不移动。双指拖动(捏合缩放)应该在手指按下并开始移动后才开始。 - Dr. Andrew Burnett-Thompson
1个回答

0

这是关于区分单手和双手缩放操作,还是关于对操纵对象强制施加某些最小/最大缩放因子的问题?

在第一种情况下,这是不可靠的。据我所知,触点不携带可识别信息,无法告诉你一个手的手指与另一个手的手指有何不同。正如Cody所指出的那样,这也不适用于缩放手势。

然而,我认为您真正想要实现的是防止用户将对象缩放到极端尺寸。由于您接收到的ManipulationDelta事件(在您的情况下优先于原始触摸事件,因为您需要自己推导出增量变换矩阵/缩放因子)公开了一个DeltaManipulation.Scale属性,您应该能够检查此属性以及操纵对象的当前比例因子(由对象变换矩阵的行向量的大小指定;我不记得是否有方便的函数可以为您检索它?)来强制实施最小/最大缩放因子。

甚至可能有一些操纵处理器或UIElement已经为您预先构建了相应的边界。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接