日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

MFC——在视图窗口加载背景图片

發(fā)布時(shí)間:2023/12/18 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MFC——在视图窗口加载背景图片 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

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)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。