C# · 12月 27, 2021

c# – 如何在运行时将图像加载到WPF?

经过一些搜索,在运行时将图像加载到 WPF窗口似乎是相当复杂的! Image image; image = new Uri(“Bilder/sas.png”,UriKind.Relative); ????.source = new BitmapImage(image);

我正在尝试这段代码,但是我需要一些帮助才能使其工作.我得到代码下面的一些红线!我也想知道我是否需要在XAML代码中添加一些额外的代码,或者是足够的:

<Image Height=”200″ HorizontalAlignment=”Left” Margin=”12,12,0″ Name=”image1″ Stretch=”Fill” VerticalAlignment=”Top” Width=”350″ />

想知道,因为我已经看到了XAML标签内的图像的例子.

编辑:

我用这个知道:

var uri = new Uri(“pack://application:,/sas.png”); var bitmap = new BitmapImage(uri); image1.source = bitmap;

XAML:

<Grid Width=”374″> <Image Height=”200″ HorizontalAlignment=”Left” Margin=”12,0″ Name=”image1″ Stretch=”Fill” VerticalAlignment=”Top” Width=”350″ /> <Button Content=”Start” Height=”23″ HorizontalAlignment=”Left” Margin=”12,226,0″ Name=”btnStart” VerticalAlignment=”Top” Width=”75″ /> <Button Content=”Land” Height=”23″ HorizontalAlignment=”Left” Margin=”287,0″ Name=”btnLand” VerticalAlignment=”Top” Width=”75″ /> <Combo@R_43_2419@ Height=”23″ HorizontalAlignment=”Left” Margin=”110,0″ Name=”cmbChangeRoute” VerticalAlignment=”Top” Width=”156″ /></Grid>

编辑2:
我的答案是“解决了”,但是在Stack Overflow之外有一些帮助.此代码工作正常:

BitmapImage image = new BitmapImage(); image.BeginInit(); image.UriSource = new Uri(“pack://application:,/Resources/” + company + “.png”); image.EndInit(); image2.source = image;解决方法 在WPF中,图像通常从 Stream或 Uri加载.

BitmapImage支持两者,Uri甚至可以作为构造函数参数传递:

var uri = new Uri(“http://…”);var bitmap = new BitmapImage(uri);

如果图像文件位于本地文件夹中,则必须使用一个文件:// Uri.你可以从这样的路径创建这样一个Uri:

var path = Path.Combine(Environment.CurrentDirectory,”Bilder”,”sas.png”);var uri = new Uri(path);

如果映像文件是程序集中的资源,则Uri必须遵循Pack Uri方案:

var uri = new Uri(“pack://application:,/Bilder/sas.png”);

在这种情况下,sas.png的Visual Studio Build Action必须是Resource.

一旦你创建了一个BitmapImage,并且还有这个XAML中的Image控件

<Image Name=”image1″ />

您只需将BitmapImage分配给该Image控件的Source属性:

image1.source = bitmap;