我正在使用C#和WPF。我想在runtıme上添加一个PNG和JPG到一个图像源,但我得到一个例外,说:
Can not implicitly add convert type string to Sytem.Windows.Media.imageSource
using System.IO; //for : input - output
using Microsoft.Win32; //For : OpenFileDialog / SaveFileDialog
using System.Windows.Media.Imaging; //For : BitmapImage etc etc
<Image x:Name="img" Margin="9,13.5,6,0.5" Source="Laugh.ico">
private void ac(object sender, RoutedEventArgs args)
{
OpenFileDialog dlg = new OpenFileDialog();
// Configure open file dialog box
dlg.FileName = "Document"; // Default file name
dlg.DefaultExt = ".PNG"; // Default file extension
dlg.Filter = " (.PNG)|*.PNG"; // Filter files by extension
// Show open file dialog box
Nullable<bool> result = dlg.ShowDialog();
// Process open file dialog box results
if (result == true)
{
// Open document
string filename = dlg.FileName;
img.Source=filename;
}
}
答案 0 :(得分:3)
很抱歉,但您可能已经注意到,该代码甚至无法编译。您无法将图像源设置为文件名
img.Source = filename
查看reference。
试试这个:
img.Source = new BitmapImage(new Uri(filename));
答案 1 :(得分:0)
我认为关键是:
img.Source=filename
应该是这样的:
BitmapImage bi= new BitmapImage();
bi.BeginInit();
bi.UriSource = new Uri(filename, UriKind.Relative);
bi.EndInit();
img.Source = bi;
因为您必须从磁盘中实际读取图像文件。
答案 2 :(得分:0)
不确定这是否适用于程序之外的图像,但您可以尝试:
Uri uri = new Uri(dlg.File.FullName, UriKind.RelativeOrAbsolute);
ImageSource imgSource = new BitmapImage(uri);
img.Source = imgSource;