显示图像,没有错误但不显示图像

时间:2014-07-21 19:38:27

标签: c# wpf

我正在开发一个C#项目,我遇到了一个奇怪的问题。我有一个Image控件,我正在尝试在其中显示图像。没有抛出错误或异常,但图像不显示。

以下是我正在使用的代码:

BitmapImage image = new BitmapImage();
image.UriSource = new Uri("images\\low_battery.png", UriKind.Relative);
imageIcon.Source = image;
imageIcon.Visibility = System.Windows.Visibility.Visible;

我有目录映像和映像文件low_battery.png在运行可执行文件的目录中运行。

感谢您提供的任何帮助。

2 个答案:

答案 0 :(得分:1)

一些建议:

1)如果您在imageIcon上订阅ImageFailed并在BitmapImage上订阅和DownloadFailed事件,则可以从WPF获取异常。然后在这些方法中加入断点并查看它的内容。

2)在设置UriSource之前,请调用image.BeginInit()。设置UriSource后,调用image.EndInit()。为了帮助调试问题,您可以在imageIcon上订阅ImageFailed事件,在BitmapImage上订阅DownloadFailed。所以最终的代码如下:

BitmapImage image = new BitmapImage();
image.BeginInit();
image.UriSource = new Uri("/images/low_battery.png", UriKind.Relative);
image.DownloadFailed += image_DownloadFailed;
image.EndInit();

imageIcon.ImageFailed += imageIcon_ImageFailed;
imageIcon.Source = image;
imageIcon.Visibility = System.Windows.Visibility.Visible;

并进一步向下:

void imageIcon_ImageFailed(object sender, ExceptionRoutedEventArgs e)
{
    // Breakpoint here
}

void image_DownloadFailed(object sender, ExceptionEventArgs e)
{
    // Breakpoint here
}

3)另一种方法是将图像直接嵌入到项目中。通过在项目中添加图像文件夹,然后添加图像,并将类型设置为“资源”

来实现

答案 1 :(得分:1)

在设置image.BeginInit()image.UriSource之后调用image.EndInit(),或者只使用以Uri作为参数的BitmapImage构造函数:

var uri = new Uri("images\\low_battery.png", UriKind.Relative);
imageIcon.Source = new BitmapImage(uri);