MFC點陣圖顯示
阿新 • • 發佈:2019-02-15
這是一種簡單的方式,分為四個步驟.
1.建立點陣圖,這裡的點陣圖僅限bmp格式的.
CBitmap bitmap;
bitmap.LoadBitmapA(IDB_BITMAP1);
匯入點陣圖資源
2.建立相容DC,
CDC dcCompatible;
dcCompatible.CreateCompatibleDC(pDC);
其中CreateCompatibleDC(pDC)函式將建立一個記憶體裝置上下文與引數pDc所指定的DC相相容,可以先用其相容的記憶體裝置上下文在記憶體中準備這些影象,然後再利用相關函式把這些資料複製到指定的實際DC中.
3.將點陣圖選入相容DC中.
dcCompatible.SelectObject(&bitmap);
4.將相容DC中的點陣圖貼到當前DC中.
pDC->BitBlt(0,0,rect.Width(),rect.Height(),&dcCompatible,0,0,SRCCOPY);
pDC->StretchBlt(0,0,rect.Width(),rect.Heigt(),&dcCompatible,0,0,bmp.bmWidth,bmp.bmHeight,SRCCOPY);
這裡有兩個函式可供使用,BitBlt意味著在複製時按照1:1的比例進行,而StretchBlt則可以實現點陣圖的拉伸或收縮.
相容DC原始只有1個畫素大小,它的大小由選入的點陣圖大小所決定,可以利用CBitmap類的GetBitmap函式來得到,以實現拉伸或收縮.
通過此方法可以快速得在應用程式中新增背景圖片,可以在WM_ERASEBKGND訊息或者WM_PAINT或者OnDraw虛擬函式裡面實現.
那麼在靜態文字中中新增背景圖片呢,其方法也是類似的。
CStatic *pStatic=(CStatic*)GetDlgItem(IDC_Num1); HBITMAP hbitmap=::LoadBitmap(AfxGetApp()->m_hInstance,MAKEINTRESOURCE(IDB_BITMAP2)); //LONG result = SetWindowLong(pStatic->GetSafeHwnd(),GWL_STYLE,style); //設定靜態控制元件的樣式,使其可以使用點陣圖,並試位標顯示使居中 pStatic->ModifyStyle(0xF,SS_BITMAP|SS_CENTERIMAGE); //設定靜態控制元件顯示點陣圖 pStatic->SetBitmap(hbitmap);