在模态窗口中显示图像

时间:2017-03-23 16:18:05

标签: wpf image

我试图用两种方法显示am image:首先是当用户有完整的绝对路径时,如果他们没有它,并且如果图像作为blob对象存储在sqlite数据库中。 这是我的代码:

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>

上面代码中的所有内容都有效,除了一件事。当Modal与图像一起显示时,模态变得非常巨大,它几乎填满了我的两个显示器。我想用这个来实现两件事:

  1. 我希望模态可以调整大小,内部的图像也是如此(响应式方法)
  2. 我希望图像按比例增长,因为我使用的大多数图像都是矩形图像而不是正方形。
  3. 这可能会更容易,我可能会谷歌它并找出来,但因为我在这里问相关的问题..我如何使用BLOB创建一个Image对象?
  4. 如果您认为不需要实现我想要的东西,请删除我对模态和/或图像对象的额外参数。

1 个答案:

答案 0 :(得分:0)

避免在XAML标记中将模态窗口的SizeToContent属性设置为WidthAndHeight。保持其默认值Manual