2014-04-25 43 views
5

有沒有什麼辦法來實現在Windows 8.1中的XAML內捏控和縮放圖像控件,我正在嘗試操縱delta事件。但那個事件不會被解僱,我也嘗試設置ManipulationMode =「全部」。Windows 8.1地鐵應用程序 - 捏和縮放圖像

<Image x:Name="kn" ManipulationMode="All" ManipulationDelta="kn_ManipulationDelta" HorizontalAlignment="Center" VerticalAlignment="Center" Height="315" Width="360" RenderTransformOrigin="0.5, 0.5"> 
    <Image.RenderTransform> 
    <CompositeTransform></CompositeTransform> 
    </Image.RenderTransform> 
</Image> 

而在CS文件

private void kn_ManipulationDelta(object sender, ManipulationDeltaRoutedEventArgs e) 
{ 
UIElement element = sender as UIElement; 
CompositeTransform transform = element.RenderTransform as CompositeTransform; 
if (transform != null) 
{ 

transform.ScaleX *= e.Delta.Scale; 
transform.ScaleY *= e.Delta.Scale; 
transform.Rotation += e.Delta.Scale/Math.PI; 
transform.TranslateX += e.Delta.Translation.X; 
transform.TranslateY += e.Delta.Translation.Y; 
} 
} 

有什麼我必須設置。或者我必須以其他方式去?

回答

15

通過用ScrollViewer控件包裝圖像,可以輕鬆實現此目的。

<ScrollViewer ZoomMode="Enabled"> 
    <Image ............ /> 
</ScrollViewer> 
+0

非常感謝:) – Stefan

4

在XAML使你的代碼這樣的..

<ScrollViewer x:Name="scrl" ZoomMode="Enabled" HorizontalScrollMode="Enabled" VerticalScrollMode="Enabled" HorizontalScrollBarVisibility="Visible" VerticalScrollBarVisibility="Visible" SizeChanged="OnSizeChanged" MinZoomFactor="1"> 
     <Canvas MaxWidth="1400" Background="AliceBlue" RenderTransformOrigin="0.5,0.5" x:Name="Main" DoubleTapped="Main_OnDoubleTapped"> 
      <Image Source="Assets/Floorplan.gif" Canvas.Left="358" Canvas.Top="84"></Image> 
     </Canvas> 
    </ScrollViewer> 

然後在後面的代碼..

private void OnSizeChanged(Object sender, SizeChangedEventArgs args) { 

     Main.Width = scrl.ViewportWidth; 
     Main.Height = scrl.ViewportHeight; 




    } 

說明: 你會看到在那裏,我包內的圖像畫布然後將畫布包裹在scrollviewer中。然後在scrollviewer中的事件SizeChanged=OnSizeChanged。在畫布後面的代碼中,width和height設置爲scrollviewer的ViewportWidth和ViewportHeight。只需按照代碼並將圖像更改爲所需圖像並查看結果即可。希望這能解決你的問題。