我正在开发一个WPF应用程序,一个信使客户端。用户应该能够更改他的头像图像。当他右键单击他的头像时,会出现一个打开的文件对话框,在那里他可以选择他想要的图像。在他做出决定之后,我删除了他当前的头像,并在同一个地方复制了同名的头像。头像图像是具有图像画笔填充的矩形。问题是在重新启动应用程序之前图像不会更新。这是用于加载新图像的代码片段。
if (x.ShowDialog() == true)
{
ImageBrush img = new ImageBrush();
BitmapImage bit = new BitmapImage();
Bitmap bmp = new Bitmap(x.FileName);
System.IO.File.Delete(System.IO.Directory.GetCurrentDirectory() + "/data/images/avatar/x.png");
bmp.Save(System.IO.Directory.GetCurrentDirectory() + "/data/images/avatar/x.png", System.Drawing.Imaging.ImageFormat.Png);
bit.BeginInit();
bit.CacheOption = BitmapCacheOption.OnLoad;
bit.UriSource = new Uri(@"pack://siteoforigin:,,,/data/images/avatar/x.png");
bit.EndInit();
img.ImageSource = bit;
ProfileImage.Fill = img;
}
我希望你能帮助我解决这个问题或者给我一些选择。谢谢大家!
答案 0 :(得分:0)
为了使BitmapImage
重新加载图像文件(具有相同的文件路径),您可以设置BitmapCreateOptions.IgnoreImageCache
选项:
bit.BeginInit();
bit.CreateOptions = BitmapCreateOptions.IgnoreImageCache;
bit.CacheOption = BitmapCacheOption.OnLoad;
bit.UriSource = new Uri(@"pack://siteoforigin:,,,/data/images/avatar/x.png");
bit.EndInit();
img.ImageSource = bit;