UWP 缩放操作(收缩)事件调用不一致

UWP scale manipulation (pinch) events invoked inconsistently

我正在尝试检测我的应用程序中的缩放操作(收缩),但由于某些原因,事件调用不一致(有时是,有时不是)。

我创建了一个可以轻松复制的示例应用程序:

<Page
    x:Class="Manipulate.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d"
    Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
    <Grid Background="Red" ManipulationMode="Scale" ManipulationDelta="Grid_ManipulationDelta" ManipulationStarted="Grid_ManipulationStarted"/>
</Page>

using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Input;

namespace Manipulate
{
    public sealed partial class MainPage : Page
    {
        public MainPage()
        {
            this.InitializeComponent();
        }

        private void Grid_ManipulationStarted(object sender, ManipulationStartedRoutedEventArgs e)
        {
            System.Diagnostics.Debug.WriteLine($"Started {e.}");
        }

        private void Grid_ManipulationDelta(object sender, ManipulationDeltaRoutedEventArgs e)
        {
            System.Diagnostics.Debug.WriteLine($"Delta {e.Delta.Scale}");
        }
    }
}

在我的实际应用程序中,我正在尝试实现缩放以放大我们的自定义相机实现(受 https://github.com/microsoft/Windows-universal-samples/tree/master/Samples/CameraManualControls 启发)但是我似乎无法让它工作,因为 ManipulationStartedManipulationDelta 在每次捏合手势时始终被调用。

我在多个 Surface 设备(Surface Book、Surface Go、Surface Pro 4)上看到了这个。

请查看此 Touch interactions 文档。

捏合操作手势两个或多个手指触摸屏幕 并靠得更近。换句话说,您需要关闭两个压着的手指。我用模拟器测试过,效果很好。这里是 sample code 你可以参考。

_compositeTransform.ScaleX = _compositeTransform.ScaleY = e.Delta.Scale;
  

更新

来自@Cosmin 我使用 20226.1000 的 Windows 版本似乎有问题。问题已修复 请查看博客 here