2014-04-25 11 views
5

Czy istnieje sposób na wykonanie szczypania i powiększenie kontrolki obrazu w XAML w Windows 8.1, próbuję delta manipulacji. Ale to zdarzenie nie zostanie wywołane, również próbowałem ustawić ManipulationMode = "All".Aplikacja Windows 8.1 Metro - Zsuwanie i powiększanie obrazu

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

A w cs plik

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

Czy jest coś trzeba ustawić. Czy muszę iść w inny sposób?

Odpowiedz

15

Można to łatwo osiągnąć, zawijając obraz za pomocą kontrolki ScrollViewer.

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

dziękuję bardzo :) – Stefan

4

W XAML zrobić swój kod tak ..

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

następnie w kodzie za ..

private void OnSizeChanged(Object sender, SizeChangedEventArgs args) { 

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




    } 

Objaśnienie: Zobaczysz tam, że owinięty obraz wewnątrz płótno następnie owinęło płótno wewnątrz przewijania. Następnie wydarzenie w przeglądarce przewijania SizeChanged=OnSizeChanged. W kodzie za płótnem "szerokość i wysokość została ustawiona na ViewportWidth i ViewportHeight scrollviewera. Wystarczy postępować zgodnie z kodem i zmienić obraz na pożądany i zobaczyć wyniki. mam nadzieję, że to rozwiąże Twój problem.

Powiązane problemy