【VC】 CStatic 控件绘制BITMAP的方法。。

 

默认CStatic控件,改变ID名称:IDC_STABITMAP  图片ID: IDB_BITMAP1

hBitmap 的获取可以使用 LoadImage 或者 LoadBitmap

一下方法的调用均在 OnPaint 函数中使用。。

 

方法1

	CStatic * pStatic  = (CStatic *)GetDlgItem(IDC_STABITMAP);
	HBITMAP hBitmap = (HBITMAP)::LoadImage(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDB_BITMAP1),IMAGE_BITMAP,0,0, LR_CREATEDIBSECTION);
	pStatic->ModifyStyle(0,SS_BITMAP|SS_CENTERIMAGE); // 修改  CStatic的样式,这一步很重要    
	pStatic->SetBitmap(hBitmap); 

方法2

CStatic * pStatic  = (CStatic *)GetDlgItem(IDC_STABITMAP);
	HBITMAP hBitmap; hBitmap =  (HBITMAP)::LoadImage(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDB_BITMAP1),IMAGE_BITMAP,0,0,        LR_CREATEDIBSECTION); 
	pStatic->ModifyStyle(0, BS_OWNERDRAW);  // 修改CStatic样式,改成自绘制,这一步很重要 
	CRect rc;  
	pStatic->GetClientRect(&rc);  
	BITMAP bm; 
	HDC hdcImage = CreateCompatibleDC(NULL); // 创建兼容DC 
	SelectObject(hdcImage, hBitmap); // 将加载进来的位图句柄选入兼容DC 
	GetObject(hBitmap, sizeof(bm), &bm);  // 将位图信息填入BITMAP结构体 
	StretchBlt(pStatic->GetDC()->GetSafeHdc(),rc.left,rc.top,rc.Width(),rc.Height(),hdcImage,0,0,bm.bmWidth,bm.bmHeight,SRCCOPY); // 拷贝位图到CStatic
	DeleteObject(hBitmap);
	DeleteDC(hdcImage);



 

 

 

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页