2012-09-26 133 views
0

我有一個Windows應用程序,其中包含一些對話框。對話框已經使用mfc編譯。我使用CImage :: Draw()方法在每個對話框上繪製一些圖像(.png)。我想提到的是,我沒有在對話框中使用任何圖片控件來渲染這些圖像,而是在運行時使用一些handle來加載它們,這一切都很好。現在當圖像加載時,這些圖像的背景會變成白色。資源文件中的圖像沒有白色背景。我的問題是如何改變這些圖像的背景,同時在對話框上繪製它們?我想要圖像的背景類似於我正在使用的默認對話框的顏色。 還有一個問題,在windows server 2008 R2機器的對話框中,.png圖像渲染不好(圖像分散)。可能的補救辦法是什麼? 任何幫助將不勝感激。如何更改mfc中CImage對象的背景顏色?

回答

1

您的PNG圖像顯然不是32位。您需要一個Alpha通道和一個透明背景。在例如打開你的圖像Paint.NET。我敢打賭你的背景也是白色的!關於圖像質量,您是否在拉伸時拉伸圖像?

編輯:對於8位成像器,我認爲需要撥打SetTransparentColor。對於32位圖像,這個函數可能會這樣做:TransparentBlt

+0

png圖像只有32位。圖像也是背景。我相信這些圖像是透明的。因爲在其他程序中,相同的圖像在做gud。我在哪裏犯錯誤。在加載時沒有其他方式來改變圖像的背景嗎? – dev

+0

查看我的更新回答。 – l33t