weidagang2046的專欄

          物格而后知致
          隨筆 - 8, 文章 - 409, 評論 - 101, 引用 - 0
          數據加載中……

          更改窗口客戶區的背景

          看多了簡單的純白色背景客戶區,有沒有想過讓自己的程序中的客戶區變成以位圖(BMP)作為背景呢?那么下面提供的方法可以幫得到你。
          接下來我會用兩種方法來實現將位圖加入顯示到客戶區中。不過首先要說的是,在此之前我們要準備好一張需要加到客戶區的位圖,并把它加入到程序的資源文件中。
          第一種方法以BitBlt來實現。我
          們新建一個單文檔MFC程序,把位圖加入到資源后,我們重點把代碼寫進C××View(此為繼承于CView的類)中的OnDraw函數中。也就是說在窗口重繪時就將圖片加進客戶區。
          我們看源代碼:
          void CLoadBitmapView::OnDraw(CDC* pDC) {
          ?CLoadBitmapDoc* pDoc = GetDocument();
          ?ASSERT_VALID(pDoc);
          ?// TODO: add draw code for native data here?
          ?CBitmap bitmap;
          ?//這里的IDB_BITMAP_TEXT是我的工程中的位圖資源
          ?//將位圖資源加入到CBitmap的對象中
          ?bitmap.LoadBitmap(IDB_BITMAP_TEXT);
          ?//創建一個設備對象
          ?CDC drawDC;
          ?//為指定設備創建信息上下文。這提供了一種不創建設備上下文即獲取有關設備信息的快速方式
          ?drawDC.CreateCompatibleDC(pDC);
          ?//加入位圖對象到DC對象
          ?drawDC.SelectObject(&bitmap);
          ?BITMAP bmpInfo;
          ?//獲取位圖信息
          ?bitmap.GetObject(sizeof(bmpInfo),&bmpInfo);
          ?//指定要執行的光柵操作。光柵操作代碼定義GDC如何合并輸出操作中的顏色,包括當前畫刷、可能的源位圖和目標位圖。
          ?pDC->BitBlt(0,0,bmpInfo.bmWidth,bmpInfo.bmHeight,&drawDC,0,0,SRCCOPY);
          }
          測試一下,位圖是不是已經加入了客戶區呢?
          第二種方法,是通過畫刷來對客戶區進行填充來實現的。
          我們來看源代碼:
          void CLoadBitmapView::OnDraw(CDC* pDC)
          {
          ?CLoadBitmapDoc* pDoc = GetDocument();
          ?ASSERT_VALID(pDoc);
          ?// TODO: add draw code for native data here
          ?//選入設備
          ?CBitmap bitmap;
          ?bitmap.LoadBitmap(IDB_BITMAP_TEXT);
          ?CBrush bru;
          ?CRgn rgn;
          ?CRect rect;
          ?//獲取客戶區的區域信息
          ?GetClientRect(&rect);
          ?rgn.CreateRectRgnIndirect(&rect);
          ?//位圖指定的模式初始化畫刷
          ?bru.CreatePatternBrush(&bitmap);
          ?//用指定畫刷和指定區域來填充
          ?pDC->FillRgn(&rgn,&bru);
          }
          運行一下,是不是同樣可以實現呢?

          from:

          posted on 2006-11-16 20:03 weidagang2046 閱讀(936) 評論(0)  編輯  收藏 所屬分類: Windows

          主站蜘蛛池模板: 安顺市| 谷城县| 金塔县| 泸定县| 佛山市| 星子县| 海原县| 图们市| 乌拉特前旗| 耒阳市| 岳池县| 潞西市| 章丘市| 蒙阴县| 监利县| 仁怀市| 东阿县| 杨浦区| 依安县| 聂拉木县| 洛扎县| 辰溪县| 祁门县| 枣庄市| 玛沁县| 高雄市| 仪陇县| 乌拉特中旗| 长治县| 华蓥市| 鲜城| 昌宁县| 临邑县| 遵义县| 阳城县| 布尔津县| 广州市| 旺苍县| 佛学| 滦南县| 上饶市|