我正在开发一个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在运行可执行文件的目录中运行。
感谢您提供的任何帮助。
答案 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);