我试图将选定的图像复制到文件夹,然后想用 Image 对象显示它。复制工作正常,但是当我想显示它时,程序似乎找不到它。仅当我手动使用“添加现有项目”时显示图像才有效。有没有办法自动添加?
这是我的代码:
string name = "image1";
OpenFileDialog dialog = new OpenFileDialog();
Nullable<bool> dialogOK = dialog.ShowDialog();
if(dialogOK == true)
{
File.Copy(dialog.FileName, @"..\..\Images\" + name + ".png", true);
image.Source = new BitmapImage(new Uri(@"Images\" + name + ".png", UriKind.Relative));
}
(“图像”在 xaml 中定义)
使用绝对路径加载 BitmapImage 似乎更安全:
var dialog = new OpenFileDialog();
if (dialog.ShowDialog() == true)
{
var targetFile = @"..\..\Images\" + name + ".png";
var currentDir = Environment.CurrentDirectory;
var targetPath = Path.Combine(currentDir, targetFile);
var targetDir = Path.GetDirectoryName(targetPath);
Directory.CreateDirectory(targetDir);
File.Copy(dialog.FileName, targetPath, true);
image.Source = new BitmapImage(new Uri(targetPath));
}
为了在加载 BitmapImage 后直接释放文件,从 FileStream 加载它:
BitmapImage bitmap = new BitmapImage();
using (var stream = File.OpenRead(targetPath))
{
bitmap.BeginInit();
bitmap.CacheOption = BitmapCacheOption.OnLoad;
bitmap.StreamSource = stream;
bitmap.EndInit();
}
image.Source = bitmap;
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句