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

本文介绍两种在对话框中加载图片的方法:一是利用ATL库中的CImage类;二是使用免费共享的CxImage库,后者支持更多图片格式并能完整处理Alpha通道。

 

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

科南

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值