今天安装<Xtreme Toolkit Professional 12.1.1>时,偶然发现了xtreme也使用了第三方的png库,libpng at sourceforge.net, 纯c, 跨平台.
C:/Program Files/Codejock Software/MFC/Xtreme ToolkitPro v12.1.1/Source/GraphicLibrary/libpng
那作个实验,自己读取显示png.
<2010_0925_0040>
libpng有新版, 我没用.
http://www.libpng.org/pub/png/libpng.html
我用的还是Xtreme自带的, xtreme版本: Xtreme ToolkitPro v13.2.1
libpng源码路径: <C:/Program Files/Codejock Software/MFC/Xtreme ToolkitPro v13.2.1/Source/GraphicLibrary>
libpng用到zlib
zlib源码路径: <C:/Program Files/Codejock Software/MFC/Xtreme ToolkitPro v13.2.1/Source/GraphicLibrary/zlib>
codeproject上有个简明易用的例子
http://www.codeproject.com/KB/graphics/PNGView.aspx
我在此基础上做的实验, 也学学那个类PngImage.
<windir>/system32/DirectX/Dinput/下有很多.png, 不用劳神找png.
运行效果
用途:处理x窗口背景擦除后, 给x窗口做背景. 这比用背景刷子装入位图好的多.
实验工程下载点:
linpng显示透明图片的资料
旧版资料:
http://sourceforge.net/projects/png-mng/files/pngbook%20demo%20programs/20010630/pngbook-20010630-src.tar.gz/download
新版资料:
http://sourceforge.net/projects/png-mng/files/pngbook%20demo%20programs/20080316/pngbook-20080316-src.zip/download
libpng的demo没编译过去,现有工程中png的config.h中加入支持透明的宏,没效果。
那用cxImage来做,把需要的功能整理出来.
http://www.codeproject.com/KB/graphics/cximage.aspx
实验过了, 用cxImage是可以显示透明背景的.png. 下面是从原始demo中抓的图,现在要做的就是把需要的功能整理出来。
想改到Dialog中,做个实验。
有头绪了,主要是在擦除背景处,从cximage中取出流,在dc上画。跟了一个cximage的原版demo, 看了个大概。上面截图中的网格背景是用刷子画出来的,其实背景是透明的。我去掉了刷子的代码,背景就是白的。
和同事讨论了些问题,没来得及整理Demo。
细节还要看整理出程序的运行结果,进行调整。
png显示透明背景肯定是可以的。明天晚上是周末,正好可以整理这个demo, 时间有的是.