我用我的VS2010項目數32位PNG文件,並將它們加載到GDI +位圖。所有工作都很好,在我的Win7開發機器上很漂亮。我使用SetColorMatrix/ImageAttributes在Win7上正常工作,但是當我在XP上運行它並使用ImageAttributes參數調用Bitmap :: DrawImage時,並不是在繪製PNG時使用了SetColorMatrix/ImageAttributes,而是使用SetColorMatrix/ImageAttributes所有。在任何時候,似乎都沒有任何錯誤來表明問題,它只是不可見。PNG圖像在VS2010資源文件在XP上做奇怪的事情與GDI +
如果我用直接從文件而不是從資源加載的圖像運行相同的代碼,它可以在XP和Win7上正常工作,但我並不想將PNG文件捆綁到我的安裝程序中 - 似乎有點的一個bodge。爲了讓生活變得更加激動人心,我的XP機器速度太慢,甚至無法運行VS2010!
有沒有人有任何想法可能是導致此,或建議,以跟蹤這個問題了,因爲我花了很長一段時間就這個問題和我出的靈感。
在此先感謝。
更新:
負載更多的測試後,我還沒有完全得到了這條底線,但有強有力的證據表明,使用位圖(的IStream *)構造函數以某種方式重整上的PNG alpha通道具有透明度。我還沒有想出到底發生了什麼,但我已經找到了解決方案 - 現在,我使用的FreeImage從資源文件加載PNG,然後創建從FIBITMAP原始圖像數據的位圖對象。這是完美的工作,所以證據指出該位圖構造函數的問題。
更新2:
所以爲了方便起見,我決定用它來加載我所有的圖像,但它遇到了麻煩加載標準的BMP文件我創建使用的FreeImage從資源加載PNG文件類的偉大工程。有點調查後,似乎當你包括BMP文件作爲位圖資源,第一個14個字節的BMP文件的他們存儲在資源包,這使得它棘手爲別的,就加載它們之前被剝離。無論如何,它很容易摸索, - 我剛換了「位圖」資源的資源類型爲「BMP」因此,它基本上把它當作一個未知的類型和存儲整個文件。所以現在它都按預期工作。只是以爲我會發布的經驗,並希望如果他們嘗試做同樣的事情一個小時救他人。
感謝您的建議羅爾 - 我已經成功地找到一個解決方案(見上文)和我的預感是,有一個在我用它搞砸了alpha通道的位圖(的IStream *)構造有些不對頭。不幸的是,我沒有別的選擇,只能使用具有透明度的PNG - 這是我首先使用它們的原因之一。 – Redeye