第一步:创建位图
CBitmap bitmap;
bitmap.LoadBitmap(IDB_BITMAP1);
第二步:创建兼容DC
CDC dcCompatible;
dcCompatible.CreateCompatibleDC(pDC);
第三步:将位图选入兼容DC中
dcCompatible.SelectObject(&bitmap);
第四步:将兼容DC中的位图贴到当前DC中
BOOL StretchBlt(
int x, int y, //指定矩形显示区域的左上角的坐标
int nWidth, int nHeight, //指定矩形显示区域的宽度和高度
CDC* pSrcDC, //源设备上下文
int xSrc, int ySrc, //源矩形图像左上角的坐标
int nSrcWidth, int nSrcHeight, //源矩形图像的宽度和高度
DWORD dwRop //指定颜色复制模式
);
例:
1、在工程的资源窗口中引入一张.bmp位图
2、窗口的绘制过程包含两步:先擦除窗口背景,再对窗口重新进行绘制
当擦除窗口背景时,程序会发送一个WM_ERASEBKGND消息,在工程的视图类中添加WM_ERASEBKGND消息的响应函数
BOOL CGraphicView::OnEraseBkgnd(CDC* pDC) { // TODO: Add your message handler code here and/or call default CBitmap bitmap; bitmap.LoadBitmap(IDB_BITMAP1); BITMAP bmp; bitmap.GetBitmap(&bmp); //获得源矩形位图的宽度、高度信息 CDC dcCompatible; dcCompatible.CreateCompatibleDC(pDC); dcCompatible.SelectObject(&bitmap); CRect rect; GetClientRect(&rect); //以1:1显示源位图 //pDC->BitBlt(0,0,rect.Width(),rect.Height(),&dcCompatible,0,0,SRCCOPY); //缩放显示源位图以适应矩形区域 pDC->StretchBlt(0,0,rect.Width(),rect.Height(),&dcCompatible,0,0,bmp.bmWidth,bmp.bmHeight,SRCCOPY); //return CView::OnEraseBkgnd(pDC); //这里应取消默认的再次擦除窗口背景的操作 return TRUE; }