MFC绘图7--显示位图

王朝vc·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

1、将位图加载到内存DC中

2、将内存DC中的内容绘制到要显示位图的DC中

*MFC中没有直接用来加载位图的函数,可以使用WindowsAPI中的

LoadImage函数来加载位图,其原型如下:

HANDLE LoadImage(

HINSTANCE hinst, //位图实体句柄,若位图在硬盘或者资源文件

//中,则将该参数设为NULL

LPCTSTR lpszName, //位图所在路径及文件名,或者资源名称

UINT uType, //加载位图的类型:

//1、IMAGE_BITMAP

//2、IMAGE_CURSOR

//3、IMAGE_ICON

int cxDesired, //位图宽度,像素

int cyDesired, //位图高度,像素

UINT fuLoad //加载方式比如LR_LOADFROMFILE等

);

步骤:

CClientDC dc(this);

CDC *mdc=new CDC;

//CDC只有空构造函数,也就是说无法通过拷贝函数来构造一个

//与dc相同的mdc,即mdc=dc非法。

//CreateCompatibleDC建立一个适合指定pDC的内存设备上下文

mdc->CreateCompatibleDC(&dc);

CBitmap bitmap;

//CBitmap继承自CGdiObject

//其成员变量m_hObject是一个句柄

//A HANDLE containing the HBITMAP, HPALETTE, HRGN, HBRUSH, HPEN, or HFONT

//attached to this object.

//可以简单记为bitmap拥有HBITMAP类型句柄m_hObject,而该句柄需要使用

//Windows API的LoadImage获得

bitmap.m_hObject=(HBITMAP)::LoadImage(NULL,"b1.bmp",IMAGE_BITMAP,500,400,LR_LOADFROMFILE);

mdc->SelectObject(bitmap);

CRect rect;

//取得客户区域大小

GetClientRect(&rect);

//BitBlt()将位图贴到要显示的DC

dc.BitBlt(0,0,rect.right,rect.bottom,mdc,0,0,SRCCOPY);

//最后要记得在析构函数中释放mdc

delete mdc

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航