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

来源:互联网 发布:windows怎样编辑照片 编辑:程序博客网 时间:2024/06/05 07:22

 

默认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); // 拷贝位图到CStaticDeleteObject(hBitmap);DeleteDC(hdcImage);



 

 

 

原创粉丝点击