1

ウィンドウを使用して、1 つ (またはオプションで 2 つ) の画像をグリッド行に表示したいと考えています。この画像は非常に大きくなる可能性があるため、Stretch プロパティを "UniformToFill" に設定し、グリッドをスクロール ビューアーに埋め込みます。

私の画像はアプリです。800 x 400 px で、ウィンドウにロードしようとすると、完全な幅で表示されません (水平スクロールバーが画像の最後で停止します)。

使用可能なウィンドウ領域を画像で埋めたいのですが、スクロールして完全に表示できるようにしたいと考えています。なにが問題ですか?

ご協力いただきありがとうございます!

タビナ

これは私のコードです:

.xaml:

<Window x:Class="Wpf.Dialogs.ImageBox"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="ImageBox" Topmost="True" WindowStartupLocation="CenterOwner"  Width="800" Height="600">
<ScrollViewer VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto" CanContentScroll="True">
  <Grid x:Name="gridImages">
    <Grid.RowDefinitions>
      <RowDefinition Height="*" />
      <RowDefinition Height="*"/>
    </Grid.RowDefinitions>
    <Image Grid.Row="0" x:Name="img1" Stretch="UniformToFill"/>
    <Image Grid.Row="1" x:Name="img2" Stretch="UniformToFill"/>
  </Grid>
</ScrollViewer>
</Window>

背後にあるコード:

using System;
using System.IO;
using System.Windows;
using System.Windows.Media.Imaging;

namespace Wpf.Dialogs
{

public partial class ImageBox : Window
{
  public ImageBox() : this("Image", string.Empty, 800, 600)
  {
  }

  public ImageBox(string title, string image, int width, int height)
    : this(title, new string[] { image }, width, height)
  {
  }

  public ImageBox(string title, string[] images, int width, int height)
  {
    InitializeComponent();

    this.Title = title;
    this.Image = images;
  }


  public string[] Image
  {
    set
    {
      if (value != null)
      {
        var bim = CreateBitmap(value[0]);
        this.img1.Source = bim;

        if (value.Length == 2)
        {
          var bi = CreateBitmap(value[1]);

          if (bi != null)
          {
            this.img2.Source = bi;
          }
        }
        else
        {
          this.img2.Source = null;
        }
      }
    }
  }

  private BitmapImage CreateBitmap(string file)
  {
    if (File.Exists(file))
    {
      var bmp = new BitmapImage();
      bmp.BeginInit();
      bmp.UriSource = new Uri(file);
      bmp.CacheOption = BitmapCacheOption.OnLoad;
      bmp.EndInit();

      return bmp;
    }
    else
    {
      return null;
    }
  }
}

}

4

1 に答える 1

0

ScrollViewer と同時に Stretch="UniformToFill" を使用することはできません。Grid と Stretch="UniformToFill" または ScrollViewer と Grid を使用します。

于 2012-06-19T00:13:28.653 に答える