看到论谈上有这么多关于 png 图片的处理,但是有一点想不通,他们怎么都用 gdi+png 来处理呢?
不是最高效最好的方法还是cximage+png图片处理吗?
使用cximage这个类,还需要你去下载一个cximage的demo。里面要用到这几个文件呀!
找到这几个文件之后把他复制到你的工程中,进行配置,这样你就可以用cximage这个类了。
第一步,打开的工程,点projects——settings
在这里配置成功以后,看一下你的里边是不是有这些东西。
cximage.lib libdcr.lib Jpeg.lib jasper.lib mng.lib png.lib tiff.lib zlib.lib
这几个东西是不是都有。你们好好捡查一下吧。
下来就是导入头文件。
你按下F5进行调试
看看是不是有问题。这样还不行,还要进行一下代码测试,是不是有问题,
在你的cxxxxxxdlg中添加头文件看他认不认。
#include "ximage.h"
public:
CxImage *m_bgcximage;
看一下能不能成功,如果成功了就可以做东西了。呵呵。
下来我们用一个jpg的图片来实验一下效果吧。给对话框添加个背景。好吧。首先,先用你的ps,或者其他工具,选将你的图片保存成jpg格式的。
在这里还得添加一个函数,第一步按下ctrl+w如下图。点击class info 点击message filter选择windows点ok
在按下ctrl+w在添加OnEraseBkgnd这个函数。
好了具体的是代码了。我给大家贴出来。看看吧,能不能成功。
BOOL CCximageDlg::OnEraseBkgnd(CDC* pDC)
{
// TODO: Add your message handler code here and/or call default
//return CDialog::OnEraseBkgnd(pDC);
RECT rect;
GetClientRect(&rect);
m_bgcximage->Tile(pDC->GetSafeHdc(),&rect);
return true;
}
在OnInitDialog()里写,这样就把jpg格式的图片就贴上来了。
m_bgcximage = new CxImage();
HRSRC temp=FindResource(NULL,"IDR_JPG1","JPG");
if (!m_bgcximage->LoadResource(temp,CXIMAGE_FORMAT_JPG)){
delete m_bgcximage;
m_bgcximage =NULL;
}
运行后的效果是这样的。