gpt4 book ai didi

WPF Image 在运行时动态更改图像源

转载 作者:行者123 更新时间:2023-12-03 10:36:21 25 4
gpt4 key购买 nike

我有一个带有标题的窗口。当用户从下拉列表中选择一个选项时,标题图像可以改变。问题是当图像加载时,它是模糊的、拉伸(stretch)的和像素化的。这些是我正在使用的 PNG 文件,它们在动态设置源之前看起来不错。

这是我用来更改图像源的代码。

string strUri2 = String.Format(@"pack://application:,,,/MyAssembly;component/resources/main titles/{0}", CurrenSelection.TitleImage);
Stream iconStream2 = App.GetResourceStream(new Uri(strUri2)).Stream;
imgTitle.Source = HelperFunctions.returnImage(iconStream2);

这里是辅助函数。
    public static BitmapImage returnImage(Stream iconStream)
{
Bitmap brush = new Bitmap(iconStream);
System.Drawing.Image img = brush.GetThumbnailImage(brush.Height, brush.Width, null, System.IntPtr.Zero);
var imgbrush = new BitmapImage();
imgbrush.BeginInit();
imgbrush.StreamSource = ConvertImageToMemoryStream(img);
imgbrush.CreateOptions = BitmapCreateOptions.PreservePixelFormat;
imgbrush.EndInit();
var ib = new ImageBrush(imgbrush);
return imgbrush;
}

public static MemoryStream ConvertImageToMemoryStream(System.Drawing.Image img)
{
var ms = new MemoryStream();
img.Save(ms, System.Drawing.Imaging.ImageFormat.Png);
return ms;
}

和 XAML
            <Image x:Name="imgTitle" HorizontalAlignment="Left" VerticalAlignment="Bottom" Grid.Column="1" Grid.Row="1" Stretch="None" d:IsLocked="False"/>

对于引用:
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 

有人有什么想法吗?

最佳答案

我能想到两件事:

首先,尝试加载图像:

string strUri2 = String.Format(@"pack://application:,,,/MyAseemby;component/resources/main titles/{0}", CurrenSelection.TitleImage);
imgTitle.Source = new BitmapImage(new Uri(strUri2));

可能问题在于 WinForm 的图像大小调整,如果图像被拉伸(stretch),将图像控件上的 Stretch 设置为“Uniform”或“UnfirofmToFill”。

第二种选择可能是图像未与像素网格对齐,您可以在我的博客 http://www.nbdtech.com/blog/archive/2008/11/20/blurred-images-in-wpf.aspx 上阅读它。

关于WPF Image 在运行时动态更改图像源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/397117/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com