2012-05-29 108 views
2

在此先感謝...在wp7中縮放和滾動圖像

在我的WP7應用程序中,我使用了以下代碼來縮放圖像。

<Image Name="imgThumbnail" Width="480" Height="740" VerticalAlignment="Center" HorizontalAlignment="Center" RenderTransformOrigin="0.5, 0.5" CacheMode="BitmapCache"> 
    <Image.RenderTransform> 
     <CompositeTransform x:Name="transform" /> 
    </Image.RenderTransform> 
    <toolkit:GestureService.GestureListener> 
     <toolkit:GestureListener PinchDelta="OnPinchDelta" PinchStarted="OnPinchStarted" /> 
    </toolkit:GestureService.GestureListener> 
</Image> 

private void OnPinchStarted(object sender, PinchStartedGestureEventArgs e) 
{ 
    var image = sender as System.Windows.Controls.Image; 
    if (image == null) return; 
    var transform = image.RenderTransform as CompositeTransform; 
    if (transform == null) return; 
    initialScale = transform.ScaleX; 
} 
private void OnPinchDelta(object sender, PinchGestureEventArgs e) 
{ 
    var image = sender as System.Windows.Controls.Image; 
    if (image == null) return; 
    var transform = image.RenderTransform as CompositeTransform; 
    if (transform == null) return; 
    transform.ScaleX = initialScale * e.DistanceRatio; 
    transform.ScaleY = initialScale * e.DistanceRatio; 
} 

縮放工作正常,但我無法滾動圖像。添加滾動查看器時,縮放功能無法正常工作。什麼是問題,我該如何解決這個問題?

回答

3

嘗試使用這個庫洛朗比尼翁做掐上的圖像&變焦:https://multitouch.codeplex.com/ - 它處理你需要一個「真正的」掐&變焦性能的計算。

的代碼看起來是這樣的:

<Image CacheMode="BitmapCache" Name="imgThumbnail" Margin="0,0,0,80" Source="test.jpg"> 
     <i:Interaction.Behaviors> 
      <behaviors:MultiTouchBehavior IsDebugModeActive="False" 
            AreFingersVisible="True" 
            IsMockActive="True"          
            MaximumScale="3" 
            MinimumScale="0.8" 
            IsScaleEnabled="True" 
            IsRotateEnabled="False" 
            IsTranslateXEnabled="True" 
            IsTranslateYEnabled="True"/> 
     </i:Interaction.Behaviors> 
    </Image> 

如果你想嘗試這種實現自己,我建議給這個文章弗朗切斯科德·維托裏讀(http://www.frenk.com/2011/03/windows-phone-7-correct-pinch-zoom-in-silverlight/)。