位圖的顯示
阿新 • • 發佈:2017-05-28
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; }
位圖的顯示