【问题标题】:How to handle Pinch in & out in UWP apps如何在 UWP 应用中处理捏合和捏出
【发布时间】:2017-05-15 20:19:42
【问题描述】:

我的应用中有一个TextBlock。我想在它上面处理pinch in & out 来调整它的字体。当ManipulationDelta 事件触发时,我检查Scale 属性,但大多数时候Scale 是1,即使我的手指越来越远或越来越近。 或者它没有像我预期的那样工作。

谁能给我举个例子,如何找到夹入或夹出发生的情况?

【问题讨论】:

    标签: uwp gesture


    【解决方案1】:

    在它周围放置一个滚动查看器。它具有开箱即用的缩放功能。

    【讨论】:

    • 不,我不能使用scrollviewer,我应该自己处理
    【解决方案2】:

    您是否将TextBlock 上的ManipulationMode 设置为Scale

    另外,我建议您将操作放在具有Transparent 背景的GridBorder 容器上以捕获操作事件。在TextBlock 的情况下,您可能会遇到命中测试问题,这可能会导致操作事件未被触发。

    <Grid ManipulationMode="Scale" ManipulationDelta="YourHandler">
       <TextBlock Text="YourTextBlock" />
    </Grid>
    

    【讨论】:

    • 正如我所说的事件被触发,我没有问题。我不知道为什么大部分时间都是 1 或者如何找到发生的夹点?
    【解决方案3】:

    我不确定您的代码是否存在问题,但我制作了一个简单的代码示例。它可以实现您的目标。

    请检查以下代码:

    <Grid Background="Red" Height="200" ManipulationDelta="StackPanel_ManipulationDelta" ManipulationMode="Scale">
            <TextBlock FontFamily="Verdana"
               FontSize="32"
               FontWeight="Bold"
               Foreground="SteelBlue"
               Text="Scaled Text" IsTextScaleFactorEnabled="True">
                <TextBlock.RenderTransform>
                    <ScaleTransform x:Name="ScaleTransform" ScaleX="1.0" ScaleY="1.0" />
                </TextBlock.RenderTransform>
            </TextBlock>
    </Grid>
    
    private void Grid_ManipulationDelta(object sender, ManipulationDeltaRoutedEventArgs e)
    {
        ScaleTransform.ScaleX *= e.Delta.Scale;
        ScaleTransform.ScaleY *= e.Delta.Scale;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-03-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多