国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
VS2010/MFC編程入門之五十一(圖形圖像:GDI對象之畫刷CBrush)

       上一節(jié)中雞啄米主要講的是畫筆CPen的用法,前面也說了,GDI對象中最常用的就是畫筆和畫刷,本節(jié)就講講畫刷CBrush。

       雞啄米依然是通過實例的方式來說明畫刷的用法。此實例要實現(xiàn)的功能是,對話框上有一個按鈕控件和一個圖片控件,點擊按鈕彈出顏色對話框,然后在顏色對話框中選擇顏色并點擊“確定”后,圖片控件中將顯示選擇的顏色。

       其實此實例的功能,還可以通過重載對話框WM_CTLCOLOR消息的響應(yīng)函數(shù)等方法來實現(xiàn),但為講解畫刷的CBrush的使用,雞啄米采用了下面代碼中的方法。

       以下是此實例的具體實施步驟:

       1、創(chuàng)建一個基于對話框的MFC工程,名字設(shè)為“Example51”。

       2、在自動生成的對話框模板IDD_EXAMPLE51_DIALOG中,刪除“TODO: Place dialog controls here.”靜態(tài)文本框,添加一個按鈕控件和一個Picture控件,ID分別設(shè)為IDC_COLOR_SEL_BUTTON和IDC_COLOR_SHOW_STATIC,按鈕控件的Caption屬性設(shè)為“選擇顏色”,此時對話框模板如下圖所示:

       3、為Picture控件IDC_COLOR_SHOW_STATIC添加CStatic變量,名稱設(shè)為m_picColor。

       4、在對話框模板中雙擊“選擇顏色”按鈕,為其添加點擊消息的響應(yīng)函數(shù)CExample51Dlg::OnBnClickedColorSelButton(),修改該函數(shù)的實現(xiàn)如下:

C++代碼
  1. void CExample51Dlg::OnBnClickedColorSelButton()   
  2. {   
  3.     // TODO: Add your control notification handler code here   
  4.     COLORREF color = RGB(255, 0, 0);    // 顏色對話框的初始顏色   
  5.     CColorDialog colorDlg(color);       // 構(gòu)造顏色對話框,初始顏色為紅色   
  6.     CRect rectPicture;       // 圖片控件的矩形區(qū)域坐標(biāo)   
  7.     CBrush newBrush;         // 創(chuàng)建的新畫刷   
  8.     CBrush *pOldBrush;       // 舊畫刷的指針   
  9.     CClientDC clientDC(this); // 構(gòu)造客戶區(qū)的設(shè)備上下文對象   
  10.        
  11.     if (IDOK == colorDlg.DoModal())    // 顯示顏色對話框   
  12.     {   
  13.         // 如果點擊了顏色對話框的“確定”按鈕,則執(zhí)行以下操作   
  14.   
  15.         // 獲取顏色對話框中選擇的顏色   
  16.         color = colorDlg.GetColor();   
  17.         // 用選擇的顏色創(chuàng)建新畫刷   
  18.         newBrush.CreateSolidBrush(color);   
  19.   
  20.         // 獲取圖片控件矩形區(qū)域的屏幕坐標(biāo)   
  21.         m_picColor.GetWindowRect(&rectPicture);   
  22.         // 將圖片控件矩形區(qū)域的屏幕坐標(biāo)轉(zhuǎn)換為其父窗口即對話框的客戶區(qū)坐標(biāo)   
  23.         ScreenToClient(&rectPicture);   
  24.   
  25.         // 選擇新畫刷,并保存舊畫刷的指針到pOldBrush   
  26.         pOldBrush = clientDC.SelectObject(&newBrush);   
  27.         // 以新畫刷為圖片控件填充顏色   
  28.         clientDC.Rectangle(rectPicture);   
  29.   
  30.         // 恢復(fù)舊畫刷   
  31.         clientDC.SelectObject(pOldBrush);   
  32.         // 刪除新畫刷   
  33.         newBrush.DeleteObject();   
  34.     }   
  35. }  

       代碼中已經(jīng)加了詳細(xì)的注釋,不過雞啄米覺得有必要再簡單介紹下CClientDC類。CClientDC類是CDC類的派生類,它生成的設(shè)備上下文對應(yīng)于窗口的客戶區(qū),另一個類CWindowDC也是CDC類的派生類,它對應(yīng)的則包括客戶區(qū)和非客戶區(qū),也就是說,CClientDC只能在客戶區(qū)繪圖,而CWindowDC可在客戶區(qū)和非客戶區(qū)繪圖。

       講到這里,有人會問,到底什么是客戶區(qū),什么是非客戶區(qū)?非客戶區(qū)包括窗口中的標(biāo)題欄、菜單欄、狀態(tài)欄、滾動條、邊框等區(qū)域,客戶區(qū)就是除去非客戶區(qū)之外的區(qū)域。

       5、編譯運行程序,在結(jié)果對話框中,點擊“選擇顏色”按鈕彈出顏色對話框,并選擇顏色后,效果如下圖:

    

       雞啄米提醒大家,如果有什么函數(shù)或類的用法不是很清楚,均可以查閱MSDN。最后祝大家學(xué)習(xí)工作順利,有事沒事多來雞啄米逛逛,呵呵。

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
VC/MFC如何設(shè)置對話框背景顏色_paul的夢想天堂
用MFC視頻控件播放視頻
MFC窗口坐標(biāo)問題
《Visual Basic 2005 程序設(shè)計》第9章 GDI+繪圖
在窗口中繪圖
關(guān)于MFC的Picture控件
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服