2

前もって感謝します..

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

ズームは正常に機能していますが、画像をスクロールできません。スクロールビューアを追加すると、ズームが機能しません。問題は何ですか?この問題を解決するにはどうすればよいですか?

4

1 に答える 1

3

Laurent Bugnionによるこのライブラリを使用して、画像をピンチ&ズームしてみてください: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>

これを自分で実装してみたい場合は、Francesco De Vittoriによるこの記事を読むことをお勧めします(http://www.frenk.com/2011/03/windows-phone-7-correct-pinch-zoom-in- silverlight /)。

于 2012-05-29T12:38:03.437 に答える