1. 程式人生 > >位圖的顯示

位圖的顯示

ima cal load alt png 信息 cli 適應 矩形

第一步:創建位圖

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

位圖的顯示