显示DDB位图

周六的日子就是叫个外卖一个人安安静静呆在实验室修炼。还没有解决LoadBitmap(LPCSTR lpszBitmap)的用法,只会用ID不行呀

显示DDB位图的基本过程如下:

(1)生成CBitmap类的对象,使用CBitmap::LoadBitmap函数将位图加载入内存

(2)生成CDC对象,用CDC::CreateCompatibleDC函数创建与显示设备上下文兼容的内存设备上下文CDC对象。

(3)用CDC::SelectObject函数将位图对象选入创建的内存设备上下文,并保存内存设备上下文原有的位图指针。

(4)用CDC::BitBlt函数显示位图

(5)用CDC::SelectObject函数恢复内存设备上下文中的原有位图。

/***********************************************************************
	* \函数名称
	*  DisplayDDB
	*
	* \输入参数:
	*  CDC* pDC          显示设备上下文
	*  LPCSTR lpseBitmap 位图资料名
	*  
	*  \返回值:
	*  TRUE:             操作成功,返回TRUE
	*  FALSE:           操作失败,返回FALSE
	*
	************************************************************************
	*/


BOOL CDDBView::DisplayDDB(CDC *pDC, UINT nIDResource)
{
	CBitmap Bitmap, *pOldBitmap;                     //创建CBitmap对象和旧的CBitmap对象指针
	BITMAP bm;                                       //BITMAP结构,用于存放位图数据
	CDC MemDC;                                       //内存设备上下文

	//载入位图资源
	if(! Bitmap.LoadBitmap(nIDResource))
		return FALSE;
	else
	//载入位图资源成功,从位图资源获取信息并填充到bm
	Bitmap.GetObject(sizeof(BITMAP), &bm);

	//生成与pDC可兼容的设备上下文
	if(!MemDC.CreateCompatibleDC(pDC))
		return FALSE;

	//将位图对象选入创建的内存设备上下文,并保存内存设备上下文中原有的位图指针
	pOldBitmap = (CBitmap*)MemDC.SelectObject(&Bitmap);

	//显示位图
    pDC->BitBlt(0,0,bm.bmWidth,bm.bmHeight,&MemDC,0,0,SRCCOPY);

	//恢复内存设备上下文中的原有位图
	MemDC.SelectObject(pOldBitmap);

    return true;

}
void CDDBView::OnDraw(CDC* pDC)
{
	CDDBDoc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);
	// TODO: add draw code for native data here
	DisplayDDB(pDC,IDB_BITMAP1);
}

刚开始我直接添加为DisplayDDB为类成员函数,可是在智能声明我这个类成员函数的时候是没有给参数的。就会出错

需要手动添加如下:(毕竟不会智能到知道你要添加的函数需要几个参数)

 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值