2017-01-01 1 views
4

У меня есть TextBlock в моем приложении. Я хочу обработать pinch in & out, чтобы изменить размер шрифта. когда ManipulationDelta Событие пожара Я проверяю Scale Свойство, но большую часть времени Scale - это даже мои пальцы, далекие от или приближающиеся. или он не работает, как я ожидал.Как обращаться с Pinch in & out в приложениях UWP

Может ли кто-нибудь показать мне пример того, как найти этот пинч в или из случившегося?

ответ

0

Поместите вокруг него прокрутку. Он масштабируется с помощью пинча из коробки.

+0

нет, я не могу использовать ScrollViewer, я должен справиться с этим сам – Maryam

0

Вы установили ManipulationMode на TextBlock на номер Scale?

Кроме того, я бы предложил, чтобы вы положили манипуляции на контейнер Grid или Border с фоном Transparent для захвата событий манипуляции. В случае с TextBlock вы можете столкнуться с проблемами тестирования, которые могут привести к тому, что события манипуляции не будут запущены.

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

, как я сказал, что событие уволят и у меня нет проблем с этим. Я не знаю, почему в большинстве случаев это 1 или как найти этот пинч? – Maryam

0

Я не уверен, есть ли какие-то проблемы в вашем коде, но я сделал простой пример кода. Он может достичь вашей цели.

Пожалуйста, проверьте следующий код:

<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; 
}