2012-05-01 15 views
2

私は自分のアプリで何かを実装しようとしています。画像を表示して、画像を挟み込む必要があります。WinRT(Metroスタイルアプリ)の画像を拡大/縮小する

私はScrollViewerを使ってその可能性はあると思っていますが、うまく動作しません。

+0

「セマンティックズーム」とは何かを説明していると思いますが、それを探している人がいるかもしれません。 –

+0

@LarryOstermanいいえセマンティックズームは、グラフィカルにスケーリングするのではなく、各コンテンツに2つ(またはそれ以上)の詳細レベルを使用するコンセプトです。 http://msdn.microsoft.com/en-us/library/windows/apps/hh465319.aspx –

答えて

1

Building A Multi-Touch Photo Viewer Controlの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); 
     } 
    } 
} 
+0

私はこの1つを試しました、それは私のためにうまく動作しませんでした。私はそれを移植できませんでした。そして、私はそれを行うより簡単な方法があると思う、私は誰かが前にそれをしたことを見たが、それはいくつかのワークショップであった、私はその男に連絡できない。 – Ateik

3

私はこれをoversimplifyことを憎むが、WinRTのXAML ScrollViewerのは、内蔵のジェスチャー操作を持っている。

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

合成にScrollViewerを組み込むコントロールでは、デフォルトのテンプレートにZoomModeの値を設定し、視覚的な状態を開始することがよくあります。これは、通常始まるテンプレート化された値です。コンポジションの一部としてScrollViewerを使用するコントロールでは、通常、コントロールのレベルでアタッチされたプロパティを設定すると、コントロール内のScrollViewerパーツのスクロール動作が変更されるようなテンプレートバインディングが使用されます。それ以外の場合は、ScrollViewerパーツのスクロール動作を変更するためにテンプレートを置き換える必要があります。

+0

あなたの答えをありがとう、私はそれを試みましたが、あなたはコードの背後からポイントにズームインすることはできません。アイデアを明確にするために、屋内マップを構築していますが、一部のエリアを強調表示して拡大したいと考えています。 – Ateik