2012-04-12 61 views
6

請幫助我使用HDC中的alpha通道。我使HDC直流投擲CreateCompatibleDC。除了調用CreateDIBSection並可以在內存中查找圖像的字節數。將DrawFrameControl調用到此DC。所有的作品,但在內存中有4個字節每個像素和alpha通道填充00。即使有FF之前。但我需要alpha通道。我如何讓DrawFrameControl設置真正的alpha值或者不要觸摸它們。謝謝。對不起英文不好:(DeviceContext(HDC)中的Alpha通道

回答

7

你不能讓GDI不能寫入每個像素4字節的字節/保留字節GDI並不是真正意義上的字母,除了一對夫婦像AlphaBlend功能。但是,您可以使用知識,它寫入和復位阿爾法0 知道哪些像素就寫信給,事後手動修復阿爾法。

欲瞭解更多信息,請閱讀這三個文章:

前兩種可能會給你足夠的信息來實現你想要的。

這些文章採用一種通用的方法來處理alpha與GDI函數,通過掃描alpha被破壞並修復它的像素(並進入更先進的技術來繪製幾個事情在彼此之上,以正確的alpha。 )FrameRect繪製一個矩形,其中線條是單位寬度和高度。您可能發現使用直線繪製效率更高,甚至直接編輯內存中的像素位圖,可以在內存中繪製直線。這避免了必須掃描GDI繪製像素的整個位圖 - 畢竟,由於它是一個具有一個單位寬邊的矩形,因此您可以確切知道哪些像素已被繪製,並且可以自己編輯它們。