我在使用C#在我的应用程序中显示某些图像时遇到问题。我使用Image类指定位置,使用BitmapImage指定源。 UriSource是相对的,我只是指定名称。它适用于某些图像,但对于其他图像,图像根本不会出现。我的图像实例是35x35大,另一个是100x100大(像素)。
任何人都知道为什么会发生这种情况以及如何解决这个问题?
感谢。 这是我使用的代码:
Image removeImage = new Image();
removeImage.HorizontalAlignment = HorizontalAlignment.Left;
removeImage.VerticalAlignment = VerticalAlignment.Top;
removeImage.Margin = new Thickness(490, 10, 0, 0);
removeImage.Width = 35;
removeImage.Height = 35;
BitmapImage source = new BitmapImage();
source.BeginInit();
source.UriSource = new Uri("delete.png", UriKind.RelativeOrAbsolute);
source.EndInit();
removeImage.Source = source;
removeImage.Stretch = Stretch.None;
removeImage.Visibility = Visibility.Visible;
removeImage.MouseDown += new MouseButtonEventHandler(removeImage_MouseDown);
答案 0 :(得分:2)
不确定图像文件的位置。如果图像在当前项目文件夹中,则必须从属性Windows中设置图像文件的Copy To Output Directory=Copy Always
属性。
答案 1 :(得分:0)
我知道诊断这样的问题的最佳方式(假设对代码的快速同行评审让你无处可去),就是使用ProcessMonitor:http://technet.microsoft.com/en-us/sysinternals/bb896645
您可以使用此工具监控计算机上的所有文件活动(确保使用包含/排除过滤器来限制噪音)。
图像未显示的原因很可能是因为您的应用程序在错误的位置查找它们(要么它们没有被复制,要么相对路径已关闭)。
ProcessMonitor将记录Windows为访问您的.jpg而进行的每次尝试(无论是失败还是成功)。如果在日志中搜索文件名,则应该找到它,可能还会显示错误消息,以及Windows用于打开文件的完整路径。
我看到的最常见的结果是
在所有这些情况下,ProcessMonitor会告诉你发生了什么。