簡體   English   中英

如何在不運行Windows運行時保留縱橫比的情況下實現壓縮變焦?

[英]How implement pinch zoom without preserving aspect ratio in windows runtime?

我有一個圍繞畫布對象的scrollviewer

<ScrollViewer>
  <Canvas x:Name="myCanvas"/>
</ScrollViewer>

我在代碼中向Canvas中添加了(很多)繼承的自定義控件,這使我基本上可以創建一個交互式圖表:

var myControl = new MyControl();
myControl.Height = 10;
myControl.Width = 20;
Canvas.SetLeft(myControl,5);
Canvas.SetTop(myControl,20);
this.myCanvas.Children.Add(myControl);

ScrollViewer允許我在這個控件畫布周圍平移和縮放縮放,保持相同的寬高比。

有沒有辦法輕松實現拉伸使用捏縮即縮放而不保持縱橫比?

ScrollViewer不支持這一點。 您需要使用指針或操作事件以及RenderTransform來推出自己的實現。

像這樣的東西(基本上實現菲利普的答案):

<Image x:Name="_image" Stretch="None" ManipulationDelta="OnManipulationDelta">
  <Image.RenderTransform>
    <CompositeTransform />
  </Image.RenderTransform>
</Image>

在代碼隱藏中:

private void OnManipulationDelta(object sender, ManipulationDeltaRoutedEventArgs e)
{
  var ct = (CompositeTransform)_image.RenderTransform;
  // Scale horizontal.
  ct.ScaleX *= e.Delta.Scale;
  // Scale vertical.
  ct.ScaleY *= e.Delta.Scale;
}

在您的情況下,您應該只有一個縮放語句。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM