WPF矩形FIll图库不更新

时间:2014-05-14 18:32:05

标签: c# wpf fill imagebrush

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

我希望你能帮助我解决这个问题或者给我一些选择。谢谢大家!

1 个答案:

答案 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;