2

私はWindowsストアアプリを作成しており、ページ上でScrollViewer内に大きな画像を配置して、ユーザーがタッチジェスチャを使用して画像をパンおよびズームできるようにしています。これまでのところ、1 つのことを除いて、とても良いです。ZoomFactorに関係なく、またはユーザーがズームした量に関係なく、画像の最大半分が画面から外れるようにユーザーが「オーバーパン」できるように、パン用の「バッファー」があるように微調整したいと思いますインまたはアウト。

私の質問は、これを実装するにはどうすればよいですか? ある人は、画像の上、左、下、右に透明な uielement を埋め込むことを提案しましたが、静的サイズの挿入された uielement が「画面外の画像の最大半分」の要件を達成できるとは思いません。

何か案は?よろしくお願いいたします。

編集: リクエストごとにコードを追加

<Grid x:Name="LayoutRoot" Background="{StaticResource ApplicationPageBackgroundThemeBrush}">
    <ScrollViewer x:Name="ImageViewer" Background="White" ZoomMode="Enabled" 
                  IsVerticalRailEnabled="False" IsHorizontalRailEnabled="False" 
                  VerticalScrollMode="Enabled" HorizontalScrollMode="Enabled" 
                  VerticalScrollBarVisibility="Hidden" HorizontalScrollBarVisibility="Hidden" 
                  MinZoomFactor=".22" MaxZoomFactor="2"
                  VerticalContentAlignment="Center" HorizontalContentAlignment="Center">
            <Image x:Name="map" Source="map.png" ImageOpened="map_Loaded_1"/>

    </ScrollViewer>
</Grid>

そして、これはイベントのコードビハインドです

    const float _defaultZoomFactor = 0.23F;
    private void map_Loaded_1(object sender, RoutedEventArgs e)
    {
        ImageViewer.ZoomToFactor(_defaultZoomFactor);
    }
4

1 に答える 1

0

イベントの画像サイズから計算される画像 UI 要素に動的マージンを追加できますがLoaded、これは とは異なりImageOpenedます。

Xaml 側:

<Image x:Name="map" Source="map.png" ImageOpened="map_Loaded_1" Loaded="OnImageElementLoaded"/>

コード側 (モックアップ):

private void OnImageUILoaded( object sender , RoutedEventArgs e)
{
  //Get image size
  //Calculate margin size
  //Set (Image)sender's new margin
}
于 2013-08-19T14:39:16.407 に答える