2010-11-15 75 views
5

我有一個純粹的C++/Win32 VS2005桌面應用程序。在WM_PAINT響應期間,當我繪製窗口時,我希望能夠將透明PNG圖像投影到我的窗口上。Pure C++/Win32應用程序中的透明PNG文件

任何指針將不勝感激。

+0

你是否搜索了「Windows PNG庫」之類的東西並查看了結果?如果是這樣,你看到了什麼問題? – 2010-11-15 18:06:25

+0

@JerryCoffin僅供參考,這篇文章現在是谷歌對「paint png winapi」的結果,事實上前四名現在都是。 – jrh 2017-03-07 22:29:08

回答

3

GdiPlus已在自從Windows XP一直是Windows的一部分最少,並且可以輕鬆解碼JPEG,PNG和GIF文件。

用於處理圖像文件的較新的API是Windows Image Component。其中samples涵蓋了使用WIC解碼圖像和GdiPlus執行alpha識別繪畫。

2

Windows圖像處理組件(WIC)是本地代碼的主要API,它提供了對各種圖像格式進行編碼和解碼的能力。您可以使用它將PNG圖像加載到您的應用程序中。

http://msdn.microsoft.com/library/ee719902

或者您可以使用GDI +但這是很老的技術並不起作用近也。您也可以使用GDI +渲染圖像,但我建議使用Direct2D。

Direct2D能夠直接在GPU上或軟件中通過窗口或位圖設備上下文呈現WIC位圖。

這裏有Direct2D的一篇介紹性文章:

http://msdn.microsoft.com/en-ca/magazine/dd861344.aspx

而這其中介紹瞭如何使用Direct2D的與WIC:

http://msdn.microsoft.com/en-us/magazine/ee819134.aspx

+0

我相信WIC在目標機器上至少需要Vista。這裏的局部約束迫使我支持XP並在VS2005上編寫代碼。鑑於這些限制,WIC仍然是一個不錯的選擇嗎? – JasonGenX 2010-11-17 15:46:27

+0

WIC適用於Windows XP SP2及更高版本。 – 2010-11-19 16:55:48