位图的显示

第一步:创建位图

  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;
}

 

posted @ 2017-05-28 00:22  Autumn_n  阅读(317)  评论(0编辑  收藏  举报
TOP