2009-10-27 38 views
1

我寫了一個在WinCE屏幕上顯示圖標的小項目。這些圖標是放置在主資源文件(Resources.resx)中的28x28 16色BMP文件(主窗體的resx具有相同的問題,並且GIF文件也不起作用)。我無法在WinCE上加載位圖

我第一次嘗試從資源中獲取任何位圖時,從Microsoft.AGL.Common.MISC.HandleAr(從System.Drawing.Bitmap調用)引發了類型爲Exception並帶有消息「Exception」的異常。 _InitFromMemoryStream。

我有兩個WinCE設備。這個錯誤只發生在其中的一個上;其他工作正常。除了這個問題之外,該應用程序可以在兩個設備上運行。該應用程序還使用一些涉及DIB的本地代碼,並且工作正常。有任何想法嗎?

更新:如果我嘗試從文件加載位圖,則會發生同樣的錯誤。我也嘗試過1位(黑色&白色),8位和24位位圖無效(WinCE幀緩衝區最常見的是16位,但我沒有圖像編輯器可以產生16位位圖。)

+0

這些是什麼設備?你能發佈鏈接到位圖嗎? – MusiGenesis 2009-10-27 19:39:04

+1

這兩個設備是否運行相同的操作系統版本?或者他們是兩種截然不同的設備? .NET CF依賴於操作系統提供的圖像編解碼器。因此,可能特定的操作系統映像可能不支持文檔中詳述的每種文件格式。 – 2009-10-27 23:38:20

+0

你說你可以創建一個DIB。 DDB怎麼樣?故障設備的顯示驅動程序是否支持16色調色板? – ctacke 2009-10-28 01:16:45

回答

0

我有一個類似的問題,並已爲此工作了好幾天。接下來我要嘗試將位圖作爲DIB存儲在資源文件中,使用LoadResource加載它,並使用GetCompatibleDC將其轉換爲DDB,並將DIB「繪製」爲DC,並創建DDB。我認爲關鍵是使用CreateCompatibleBitmap。我會報告我的調查結果。

+0

我希望你用C#寫這篇文章......我非常肯定C#資源文件與C++資源文件不同。 – Qwertie 2009-12-17 16:17:34