我有一個純粹的C++/Win32 VS2005桌面應用程序。在WM_PAINT響應期間,當我繪製窗口時,我希望能夠將透明PNG圖像投影到我的窗口上。Pure C++/Win32應用程序中的透明PNG文件
任何指針將不勝感激。
我有一個純粹的C++/Win32 VS2005桌面應用程序。在WM_PAINT響應期間,當我繪製窗口時,我希望能夠將透明PNG圖像投影到我的窗口上。Pure C++/Win32應用程序中的透明PNG文件
任何指針將不勝感激。
GdiPlus已在自從Windows XP一直是Windows的一部分最少,並且可以輕鬆解碼JPEG,PNG和GIF文件。
用於處理圖像文件的較新的API是Windows Image Component。其中samples涵蓋了使用WIC解碼圖像和GdiPlus執行alpha識別繪畫。
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:
我相信WIC在目標機器上至少需要Vista。這裏的局部約束迫使我支持XP並在VS2005上編寫代碼。鑑於這些限制,WIC仍然是一個不錯的選擇嗎? – JasonGenX 2010-11-17 15:46:27
WIC適用於Windows XP SP2及更高版本。 – 2010-11-19 16:55:48
你是否搜索了「Windows PNG庫」之類的東西並查看了結果?如果是這樣,你看到了什麼問題? – 2010-11-15 18:06:25
@JerryCoffin僅供參考,這篇文章現在是谷歌對「paint png winapi」的結果,事實上前四名現在都是。 – jrh 2017-03-07 22:29:08