经过一些搜索,在运行时将图像加载到
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" /> <ComboBox 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;