2

アプリに何かを実装しようとしています。画像を表示し、ユーザーが画像をピンチインおよびピンチアウトできるようにする必要があります。

ScrollViewer を使用すると可能だと思いますが、機能させることができませんでした。

4

2 に答える 2

3

これを単純化しすぎるのは嫌ですが、WinRT XAML ScrollViewer にはジェスチャ操作が組み込まれています。

ここで私が何を意味するかを見ることができます。これはあなたが望むものではないかもしれません。しかし、それは確かに単純なアプローチであり、特定の % のシナリオに適合する可能性があります。多分あなたのものでさえ。

合成に ScrollViewer を組み込むコントロールは、多くの場合、既定のテンプレートで ZoomMode の値を設定し、表示状態を開始します。通常は、このテンプレート化された値から開始します。構成の一部として ScrollViewer を持つコントロールは、通常、コントロールのレベルで添付プロパティを設定すると、コントロール内の ScrollViewer 部分のスクロール動作が変更されるように、テンプレート バインディングを使用します。それ以外の場合は、ScrollViewer パーツのスクロール動作を変更するために、テンプレートを置き換える必要がある場合があります。

于 2012-08-29T22:23:28.570 に答える
1

マルチタッチ フォト ビューアー コントロールの構築に関する Morten Nielsen の記事を参照してください。これは Silverlight/Windows Phone 用ですが、画像の操作を有効にし、操作イベントでいくつかのタイプを変更するだけであれば、うまく機能するはずです。

あなたにとって十分な簡単な解決策は、画像をScrollViewerに入れるだけですが、それが機能していることを確認するには、タッチスクリーンが必要か、シミュレーターで実行する必要があります(ピンチツールを使用し、画像をドラッグしてスクロールしてズームイン/アウト)。

コードでズームすることもできます:

<Grid
    Background="{StaticResource ApplicationPageBackgroundBrush}">
    <ScrollViewer
        x:Name="myScrollViewer">
        <Image
            Source="/Assets/SplashScreen.png" />
    </ScrollViewer>
</Grid>

.

public BlankPage()
{
    this.InitializeComponent();
    myScrollViewer.ZoomMode = ZoomMode.Enabled; // default
    Test();
}

private async void Test()
{
    while (true)
    {
        for (double x = 0; x < 2 * Math.PI; x += Math.PI / 30)
        {
            await Task.Delay(1000 / 30);
            float factor = (float)(1.0 + Math.Sin(x) / 10);
            myScrollViewer.ZoomToFactor(factor);
        }
    }
}
于 2012-05-01T09:27:12.247 に答える