MFC——在视图窗口加载背景图片
1.若是文檔視圖程序的話,在視圖類的OnDraw(CDC* pDC)函數(shù)中調(diào)用pDC->TextOut()函數(shù),就像平常輸出文字一樣。若是嫌文字的背景顏色破壞了圖像,可以在輸出文字之前調(diào)用pDC->SetBkMode(TRANSPARENT);
2.若是在對(duì)話框應(yīng)用程序中,就在對(duì)話框類的OnPaint()函數(shù)中創(chuàng)建一個(gè)局部對(duì)象CPaintDC dc(this);然后dc.TextOut()就行。若是嫌文字的背景顏色破壞了圖像,可以在輸出文字之前調(diào)用dc.SetBkMode(TRANSPARENT);
?
例如:
BOOL CChildView::OnEraseBkgnd(CDC* pDC)
{
?? ?// TODO: ?在此添加消息處理程序代碼和/或調(diào)用默認(rèn)值
?? ?CPaintDC dc(this); // device context for painting
?? ?CRect ? rect;
?? ?GetClientRect(&rect); ? ?//獲取對(duì)話框長(zhǎng)寬 ? ? ?
?? ?CDC ? dcBmp; ? ? ? ? ? ? //定義并創(chuàng)建一個(gè)內(nèi)存設(shè)備環(huán)境
?? ?dcBmp.CreateCompatibleDC(&dc); ? ? ? ? ? ? //創(chuàng)建兼容性DC
?? ?CBitmap ? bmpBackground;
?? ?bmpBackground.LoadBitmap(IDB_BITMAP1); ? ?//載入資源中圖片
?? ?BITMAP ? m_bitmap; ? ? ? ? ? ? ? ? ? ? ? ? //圖片變量 ? ? ? ? ? ? ??
?? ?bmpBackground.GetBitmap(&m_bitmap); ? ? ? //將圖片載入位圖中
?? ?//將位圖選入臨時(shí)內(nèi)存設(shè)備環(huán)境
?? ?CBitmap ?*pbmpOld = dcBmp.SelectObject(&bmpBackground);
?? ?//調(diào)用函數(shù)顯示圖片StretchBlt顯示形狀可變
?? ?dc.StretchBlt(0, 0, rect.Width(), rect.Height(), &dcBmp, 0, 0, m_bitmap.bmWidth, m_bitmap.bmHeight, SRCCOPY);
?? ?return 0;
?? ?//return CWnd::OnEraseBkgnd(pDC);
}
?
?
MFC——在視圖窗口加載背景圖片
這是寫(xiě)的第一篇博客,就不求個(gè)多么的高深的技術(shù)問(wèn)題了,就分享下我現(xiàn)在做畢設(shè)時(shí)遇見(jiàn)的問(wèn)題和解決方法吧,希望對(duì)大家有所幫助。
問(wèn)題:如何在視圖窗口加載一張小圖片作為背景,且充滿整個(gè)View窗口呢?
方法:步驟如下
1.先創(chuàng)建或者添加一張資源圖片(Bitmap),格式為bmp的,ID號(hào) 我這里為IDB_BITMAP1
2.在工程的View類里面定義兩個(gè)變量:
public:
//為了給視圖類畫(huà)上背景 定義以下兩個(gè)變量
CBitmap *m_bitmap;
CBrush m_brushbackground;
3.在類的構(gòu)造函數(shù)里添加如下代碼:
m_bitmap = new CBitmap;
m_bitmap ->LoadBitmap(IDB_BITMAP1);
m_brushbackground.CreatePatternBrush(m_bitmap);//這三行是為了給視圖窗口加載背景
4.打開(kāi)類向?qū)?#xff0c;用VS2012的右擊這個(gè)C....View類然后選擇類向?qū)?#xff0c;在消息里面找到WM_ERASEBKGND,在右邊點(diǎn)擊添加處理程序,然后點(diǎn)編輯代碼,ok。
5.然后在函數(shù)體添加代碼如下:
CView::OnEraseBkgnd(pDC);
CDC dcMem;
CClientDC dc(this);
HBITMAP hbit;
dcMem.CreateCompatibleDC(&dc);
hbit = (HBITMAP)dcMem.SelectObject(m_bitmap);
CRect rect;
GetClientRect(&rect);
pDC->FillRect(rect,&m_brushbackground);//充滿整個(gè)客戶區(qū)
//GetDC()->BitBlt(10,10,400,300,&dcMem,0,0,SRCCOPY);//加載到某個(gè)固定位置
//return CView::OnEraseBkgnd(pDC);
return 0;
切記:一定要把自動(dòng)加上的return??CView::OnEraseBkgnd(pDC);注釋起來(lái) 要不然顯示不出來(lái)背景的哦,然后寫(xiě)上return 0;
好了 ,這樣應(yīng)該就可以了 ?希望對(duì)你有用!!
總結(jié)
以上是生活随笔為你收集整理的MFC——在视图窗口加载背景图片的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 什么是程序员正确的职场心态?
- 下一篇: 高效程序员应该养成的七个习惯