在对话框显示图片补充方法

来源:互联网 发布:淘宝网 api接口 编辑:程序博客网 时间:2024/04/25 22:36

 

总结出两种方法:
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

原创粉丝点击