2011-12-12 51 views
0

我在使用C#在我的應用程序中顯示某些圖像時遇到了問題。我使用Image類指定位置,並使用BitmapImage指定源。 UriSource是相對的,我只是指定了名稱。它適用於某些圖像,但對於其他圖像,圖像根本不會顯示。我的圖像實例是35x35大,另一個是100x100大(像素)。PNG和jpg圖像沒有出現在C#應用程序中

任何人都知道爲什麼會發生這種情況,以及如何解決它?

謝謝。 下面是我使用的代碼:

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

您是否在使用ASP.NET – BizApps

回答

2

不確定圖像文件的位置。如果圖像位於當前項目文件夾中,則必須從屬性窗口設置圖像文件的Copy To Output Directory=Copy Always屬性。我所知道的診斷那樣的問題(假設的代碼讓你無處快速同行評審)

+0

來額外檢測文件是否存在於運行時,您仍然可以使用'File.Exists(path)'函數。請參閱:http://msdn.microsoft.com/en-us/library/system.io.file.exists.aspx – Raptor

+0

這裏有.sln文件和一個文件夾。圖像文件位於包含bin,obj和Properties文件夾的文件夾中。你能解釋一下這行代碼嗎?有什麼我需要先導入? – Nabou

+0

@Nibou - 好的!我想你可能要仔細檢查圖像文件的文件名和路徑。如果可能,您可以發佈代碼(編輯您的帖子並添加片段代碼)。 – adatapost

0

最好的辦法,就是用的ProcessMonitor:http://technet.microsoft.com/en-us/sysinternals/bb896645

您可以使用此工具來監控所有的機器上的文件活動(確保使用包含/排除過濾器來限制噪音)。

這很可能是因爲你的應用程序正在尋找他們在錯誤的地方(或者他們沒有被複制,或者相對路徑是關閉的)。

ProcessMonitor將記錄Windows訪問您的.jpg所做的每一次嘗試(無論是失敗還是成功)。如果您在日誌中搜索您的文件名,您應該可以找到它,可能還會附帶一條錯誤消息以及Windows用來打開該文件的完整路徑。

最常見的結果我看到的是實際使用

  1. 路徑是從你所需要的路徑不同。
  2. 路徑是正確的,但您的文件不存在(構建/複製/安裝問題)
  3. 路徑是正確的,但您的Web應用程序沒有權限讀取該文件。

在所有這些情況下,ProcessMonitor會告訴你發生了什麼。

相關問題