2017-03-23 14 views
0

私は2つの方法で画像を表示しようとしています。まず、絶対パスが完全であり、それがない場合、画像がsqliteデータベースにBLOBオブジェクトとして保存されている場合です。ここ は私のコードです:ここではモーダルウィンドウに画像を表示

var modal = new Modal(); 
modal.HorizontalAlignment = HorizontalAlignment.Center; 
modal.VerticalAlignment = VerticalAlignment.Center; 
modal.Title = "View Image"; 
modal.ResizeMode = ResizeMode.CanResizeWithGrip; 

Grid grid = new Grid(); 
RowDefinition row1 = new RowDefinition() {Height = GridLength.Auto}; 
grid.RowDefinitions.Add(row1); 

if (!string.IsNullOrEmpty(ImageFileLocation)) 
{ 
    Image i = new Image(); 
    BitmapImage bi = new BitmapImage(); 
    bi.BeginInit(); 
    bi.UriSource = new Uri(ImageFileLocation, UriKind.Absolute); 
    bi.EndInit(); 
    i.Source = bi; 
    //i.Height = 400; 
    //i.Width = 400; 
    i.MinHeight = 400; 
    i.MinWidth = 400; 
    i.Stretch = Stretch.Fill; 
    i.HorizontalAlignment = HorizontalAlignment.Stretch; 
    i.VerticalAlignment = VerticalAlignment.Stretch; 
    grid.Children.Add(i); 
    modal.ModalContentControl.Content = grid; 
    } 
    else if (ImageStore.ImageStoreId != null) 
    { 
     //TODO: Create Image object to display 
     MessageBox.Show(ImageStore.ImageStoreId.ToString()); 
    } 
    modal.ShowDialog(); 

は私のモーダル..ですそれは基本的に私はモーダルダイアログボックスとして再使用することができるウィンドウです。

<Window x:Class="Screens.Modal" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
     xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
     xmlns:local="clr-namespace:Screens" 
     mc:Ignorable="d" 
     Title="Modal" ResizeMode="NoResize" 
     SizeToContent="WidthAndHeight" x:Name="ModalWindow" WindowStartupLocation="CenterScreen"> 
    <Grid> 
     <ContentControl x:Name="ModalContentControl" /> 
    </Grid> 
</Window> 

上記のコードはすべて1つのものを除いて動作します。モーダルが画像とともに表示されると、モーダルは巨大になり、私の2台のモニターはほぼ満員になります。私は、この2つのことを達成したい:

  1. 私はサイズ変更可能であることが、モーダルしたいので、それ内部の画像(応答アプローチ)
  2. はありません、私はイメージが比例私は意志を使用した画像の中で最もので、成長させたいです四角形ではなく四角形のイメージになります。
  3. これは簡単かもしれませんが、おそらく私はGoogleにそれを知ってもらえますが、私はここで関連する質問をしています。BLOBを使ってImageオブジェクトを作成するにはどうすればいいですか?

あなたは私が欲しいものを達成するために必要とされていないと思われる場合、私は、モーダルおよび/またはイメージオブジェクトを持っている余分なパラメータを削除してください。

+0

Image要素のStretchプロパティをNoneまたはUniformToFillに設定しようとしましたか? HeightプロパティとWidthプロパティを設定することもできます。 – mm8

+0

mm8、高さと幅を設定すると、イメージがそのサイズにのみレンダリングされます。それはもはや伸縮しません。私は 'Stretch.UniformToFill'を試しましたが、私が言及したように再び巨大な画像をレンダリングします –

+0

ウィンドウのサイズを設定してください。ウィンドウを特定のサイズにするには、どこかに指定する必要があります。 – mm8

答えて

0

XAMLマークアップでモーダルウィンドウのSizeToContentプロパティをWidthAndHeightに設定しないでください。デフォルト値はManualのままにします。