总结出两种方法:
1. 使用ATL库中的CImage类加载图片
2. 使用免费共享的CxImage库中的加载图片(可支持几乎所有格式)
方法一、使用ATL库中的CImage类加载图片
使用ATL库中的CImage类加载图片作为对话框背景
使用CImage类库要在应用程序的stdafx.h文件中添加CImage类的包含文件:
#include "atlimage.h"
BOOL CAboutDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: 在此添加额外的初始化
//用CImage加载
m_imgBK.Load("res//006.png");
width=m_imgBK.GetWidth();
height=m_imgBK.GetHeight();
bool bLoad=m_imgBK.IsNull();
int uMaxClr=m_imgBK.GetMaxColorTableEntries();
return TRUE; // return TRUE unless you set the focus to a control
// 异常: OCX 属性页应返回 FALSE
}
void CAboutDlg::OnPaint()
{
CPaintDC dc(this); // device context for painting
// TODO: 在此处添加消息处理程序代码
m_imgBK.Draw(dc.GetSafeHdc(),150,150,width,height);//,0,0,50,50);
// 不为绘图消息调用 CDialog::OnPaint()
}
方法二、使用免费共享的CxImage库中的加载图片
下载自http://www.codeproject.com/bitmap/cximage.asp
1. 下载Download full source files (full) 后解压,进行修正后,编译出所有的lib和dll库,将lib放入CxImageLib目录,将dll放入程序运行目录。在项目中依赖源中添加该库目录(建议按需加载lib库以减小体积)。
2. 在对话框类中加入声明变量CxImage xImage;
3. 在OnInitDialog()中初始化该对象
xImage=CxImage(str,CXIMAGE_FORMAT_PNG);
ASSERT(xImage.IsValid());
4. 在OnPaint()中绘制图像
CPaintDC dc(this);
xImage.Draw(dc.m_hDC);
//等同于 xImage.Draw(dc.m_hDC,0,0,xImage.GetWidth(),xImage.GetHeight());
注:用CxImage::Draw()可完整支持Alpha通道等。如果调用CxImage::Draw2()则与CImage一样仅支持单透明色(并非直接显示图像中的透明色,而是将某色置为透明)
SavageConan
2007.08.01
本文介绍两种在对话框中加载图片的方法:一是利用ATL库中的CImage类;二是使用免费共享的CxImage库,后者支持更多图片格式并能完整处理Alpha通道。
4544

被折叠的 条评论
为什么被折叠?



