在纯C++/Win32应用程序中使用透明PNG文件

6

我有一个纯C++/Win32 VS2005桌面应用程序。在我的WM_PAINT响应期间,当我绘制窗口时,我希望能够将一个透明的PNG图像投影到我的窗口上。

任何指针都将不胜感激。


你是否尝试过在谷歌上搜索“Windows PNG库”之类的内容并查看结果?如果是,你遇到了什么问题,它又给出了什么结果? - Jerry Coffin
@JerryCoffin 只是提供信息,这篇文章现在是“paint png winapi”在谷歌上的排名第一结果,事实上前四个结果现在都是SO。 - jrh
2个回答

3
自Windows XP时代以来,GdiPlus 已经成为Windows的一部分,并且能够轻松解码JPEG、PNG和GIF文件。
处理图像文件的较新API是Windows Image Component。其中一个示例介绍了如何使用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


我相信WIC在目标计算机上需要至少Vista操作系统。由于本地限制,我不得不支持XP并在VS2005上编写代码。考虑到这些限制,WIC仍然是一个好选择吗? - JasonGenX
WIC可用于Windows XP SP2及更高版本。 - Kenny Kerr

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接