public static System.Drawing.Image GetImage()
{
// ... returns a System.Drawing.Image
}
public partial class PreviewWindow : Window
{
private void btnPreview_Click(object sender, RoutedEventArgs e)
{
System.Drawing.Image page = GetImage();
var bitmap = new BitmapImage();
using (var ms = new MemoryStream())
{
page.Save(ms, System.Drawing.Imaging.ImageFormat.Bmp);
ms.Position = 0;
bitmap.BeginInit();
bitmap.CacheOption = BitmapCacheOption.OnLoad;
bitmap.StreamSource = ms;
bitmap.EndInit();
}
imgPreview.Source = bitmap;
imgPreview.Stretch = Stretch.UniformToFill;
imgPreview.StretchDirection = StretchDirection.Both;
}
}
Я создаю изображение, возвращаю его в окно пользовательского интерфейса как System.Drawing.Image
и отображаю предварительный просмотр изображения в компоненте WPF System.Windows.Controls.Image
. Это в основном работает.
Проблема в том, что это не масштабирование. Я хочу, чтобы изображение сохраняло правильное соотношение сторон, но сжималось, чтобы соответствовать компоненту изображения (изображение всегда будет больше экрана). Там нет сообщения об ошибке или исключения, но изображение отображается в полном размере, но обрезается в пространство компонента.
Я попытался установить свойства масштабирования в xaml и в коде, как указано выше. Я подозреваю, что это может быть потому, что он загружается из потока, а не из ресурса. Есть ли что-то тонкое, что мне не хватает?
Как создать изображение, которое загружается в компонент WPF Image из масштаба потока, как описано?