在Windows 8.1应用程序中使用c#的手势

时间:2014-05-22 09:24:50

标签: c# xaml windows-store-apps winrt-xaml

我想在类似here所述的应用程序中使用手势。

任何人都可以提供一个很好的教程或解释,我将学习基础知识。

感谢。

1 个答案:

答案 0 :(得分:2)

如果您按照评论中的链接显示如何平移/缩放。缩放通常使用ScrollViewer完成,如示例here中所示。

<ScrollViewer x:Name="scrollViewer" Width="480" Height="270" HorizontalAlignment="Left" VerticalAlignment="Top" VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto" ZoomMode="Enabled" MinZoomFactor="0.7"> 
    <StackPanel Width="480" Height="270" Orientation="Horizontal"> 
      <Image AutomationProperties.Name="Image of a cliff" Source="images/cliff.jpg" Stretch="Uniform" HorizontalAlignment="Left" VerticalAlignment="Top"/> 
    </StackPanel> 
</ScrollViewer> 

ScrollViewer处理捏合+缩放。

旋转你必须自己处理,this link应该告诉你如何。

在这种情况下,您需要设置GestureRecognizer以包含Windows.UI.Input.GestureSettings.ManipulationRotate并连接到ManipulationUpdated事件。

在该链接中,它显示您可以通过ManupulationUpdatedEventArgs .Delta.Rotation属性获取操作之间的差异(增量变换)。

一旦拥有了这个价值,你就可以随心所欲地做任何事情。 例如,如果您的XAML中有一个带变换的命名图像:

<Image x:Name="myImage" Source="{Binding YourImageUrl}" Stretch="Uniform" RenderTransformOrigin="0.5,0.5" >
    <Image.RenderTransform>
        <CompositeTransform x:Name="myTransform" Rotation="0"/>
    </Image.RenderTransform>
</Image>

然后你可以响应操作增量,你可以设置myTransform.Rotation = myTransform.Rotation + Delta.Rotation

你可能会混淆ScrollViewer的内置行为和手动处理操作事件,这可能意味着你需要通过操纵事件自己处理它。

希望有所帮助。