显示一张位图,三种基本方法:
一、位图资源的显示(设资源ID为IDB——bitmap1程序如下)
{
CBitmap bitmap;
CBitmap* poldbitmap;
cdc memdc;
memdc.createcompatibledc(&dc); // 建立与显示设备兼容的内存设备场境
bitmap.loadbitmap(idb_bitmap1); // 取出位图资源
poldbitmap=memdc.selectobject(&bitmap); // 将位图选入内存场境
dc.bitblt(50,50,48,48,&memdc,0,0,srccopy); // 显示它
memdc.selectobject(poldbitmap);
}
二、创建位图,然后在里面画上图形,再显示它
{
CBitmap bitmap;
CBitmap* poldbitmap;
cdc memdc;
int i;
cpen pen;
cpen* oldpen;
memdc.Createcompatibledc(&dc); // 建立与显示设备兼容的内存设备场境
bitmap.Createcompatiblebitmap(&dc,100,100);// 建立与显示设备兼容的位图
poldbitmap=memdc.SelectObject(&bitmap); // 将位图选入内存场境
for(i=0;i<100;i++)
{ // 画100根线
pen.CreatePen(ps_solid,1, rgb(0,0,i*2+55));
oldpen=memdc. SelectObject (&pen);
memdc.moveto(0,i);
memdc.lineto(100,i);
memdc.selectobject(oldpen);
pen.deleteobject();
}
dc.bitblt(50,50,100,100,&memdc,0,0,srccopy); // 显示它
memdc.selectobject(poldbitmap);
}
三、显示磁盘上的外部bmp文件
{
hbitmap bitmap;
// 读取位图文件sample.bmp
bitmap=(hbitmap)loadimage(afxgetinstancehandle(),"sample.bmp",
image_bitmap,0,0,lr_loadfromfile|lr_createdibsection);
assert(bitmap);
hbitmap oldbitmap;
cdc memdc;crect rect;
memdc.createcompatibledc(&dc);
getclientrect(rect);
oldbitmap=(hbitmap)memdc.selectobject(bitmap);
// 显示它
dc.bitblt(20,20,rect.width()-20,rect.height()-20,&memdc,0,0,srccopy);
memdc.selectobject(oldbitmap);
}
文章评论(0条评论)
登录后参与讨论