1

我正在开发一个 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;
}

我希望你能帮助我解决这个问题或给我一些替代方案。谢谢你们!

4

1 回答 1

1

为了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;
于 2014-05-15T10:42:42.250 回答