2012-09-12 59 views
10

我有一個WPF應用程序,它在Windows 7操作系統上運行良好。但同一個應用程序在特定的幾臺Windows XP機器上崩潰。WPF應用程序顯示「圖像格式無法識別」

它在幾臺Windows XP機器上運行良好。但在幾臺XP機器上卻無法啓動。

錯誤 - 圖像格式無法識別。

我知道這個問題已被問幾次。但我的問題是我仍然無法弄清楚如何解決這個問題。

我應該改變使用應用程序的.ico ..

回答

2

如果我沒有記錯的Windows XP不支持圖標比48x48 pixels更大,這可能是飛機失事的原因。 .ico文件應該可以在兩個系統上運行。

您可以創建一個支持多種尺寸的圖標,因此如果您在同一個文件中添加48x48並且例如256x256,則應該很好。另外請確保在製作支持多種尺寸的圖標時選擇一個好的軟件來製作圖標。我使用Greenfish Icon Editor,我認爲它工作正常。但有很多這樣的其他產品。

一定要閱讀The ICON handbook, section Windows,它包含有關使用什麼圖標大小和位深度的良好信息。


上的其他線程支持了我的信念:

problems with icon image

Which icon sizes should my Windows application's icon include?

+0

感謝@Avada Kedavra ..但它運行在幾臺機器絕對沒問題..它與解決方案有關嗎?分辨率爲 – Sandepku

+0

..聽起來很牽強。但我真的不知道。 –

+0

該錯誤是與256X256的圖標..它現在工作正常..感謝您的鏈接..欣賞.. – Sandepku

10

不幸的是,當你想支持大圖標簡單地刪除256x256的應用程序不是最大的解決方案大小爲Windows Vista,7,8和轉發。

解決此問題的另一種方法是不壓縮圖標中的256x256圖像。有關更多信息,請參閱此forum thread

這是怎麼回事?那麼,大多數圖標實用程序將有一個選項(因爲這是一個常見的問題)。我使用IcoFX以下,您可以看到我需要清除的選項(以紅色突出顯示)。

IcoFX Screenshot

+0

我感謝這篇文章(http://stackoverflow.com/questions/8971751/the-image-格式是不可識別的,取決於監視器),它有一個與它的論壇鏈接的答案......這是最初的靈感/解決方案。 – cplotts

+1

壓縮有很大的不同,我的圖標從39kb變爲288kb。 – tofutim

+0

@tofutim,是的,這是正確的..但如果你想支持Windows XP,這是必要的。 – cplotts

2

在WPF應用程序,你將有至少兩個地方設置圖標:

  1. 應用程序圖標。這用於在資源管理器,桌面等中顯示應用程序。您可以在項目屬性中進行設置。
  2. 窗口圖標。這用作窗口左上角的圖標,也可能用於alt-tab和任務欄上。您將其設置爲窗口上的Icon屬性。

通常情況下,您可以在兩種情況下使用相同的圖標文件。但是,如果您有一個壓縮的256x256圖標作爲窗口圖標,則可能會在Windows XP中崩潰。這就是你正在經歷的。另一方面,當應用程序圖標具有壓縮的256x256圖標時,情況並非如此。因此,另一個解決方案(我在我的所有項目中實現)都有兩個圖標:應用程序圖標(其中包含所有尺寸)和特殊的「窗口圖標」版本,其中只包含16x16和32x32這些是使用的唯一尺寸)。

6

今天早上我對這個問題有一些樂趣。事實證明,錯誤只發生在XP機器上,顏色設置設置爲16位,當我將其更改爲32位時,問題奇蹟般地消失了。

這適用於XP(包括嵌入式)SP3。

+0

+1良好的觀察。你救了我的一天:)。這幫助我弄清楚,使用16位顏色的RDP會話導致我的應用程序崩潰,儘管我能夠從具有32位顏色的VNC會話中啓動它。 – kiran

0

另一個解決方法(16位/ 32位分辨率的問題)是不是在XAML來定義圖標,但在代碼加載:

this.Icon = new BitmapImage(new Uri("pack://application:,,,/UserInterface;component/Resources/Icons/ReportViewer.ico")); 
相關問題