免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
VS2010/MFC編程入門之五十一(圖形圖像:GDI對(duì)象之畫(huà)刷CBrush)

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

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

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

       以下是此實(shí)例的具體實(shí)施步驟:

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

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

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

       4、在對(duì)話框模板中雙擊“選擇顏色”按鈕,為其添加點(diǎn)擊消息的響應(yīng)函數(shù)CExample51Dlg::OnBnClickedColorSelButton(),修改該函數(shù)的實(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);    // 顏色對(duì)話框的初始顏色   
  5.     CColorDialog colorDlg(color);       // 構(gòu)造顏色對(duì)話框,初始顏色為紅色   
  6.     CRect rectPicture;       // 圖片控件的矩形區(qū)域坐標(biāo)   
  7.     CBrush newBrush;         // 創(chuàng)建的新畫(huà)刷   
  8.     CBrush *pOldBrush;       // 舊畫(huà)刷的指針   
  9.     CClientDC clientDC(this); // 構(gòu)造客戶區(qū)的設(shè)備上下文對(duì)象   
  10.        
  11.     if (IDOK == colorDlg.DoModal())    // 顯示顏色對(duì)話框   
  12.     {   
  13.         // 如果點(diǎn)擊了顏色對(duì)話框的“確定”按鈕,則執(zhí)行以下操作   
  14.   
  15.         // 獲取顏色對(duì)話框中選擇的顏色   
  16.         color = colorDlg.GetColor();   
  17.         // 用選擇的顏色創(chuàng)建新畫(huà)刷   
  18.         newBrush.CreateSolidBrush(color);   
  19.   
  20.         // 獲取圖片控件矩形區(qū)域的屏幕坐標(biāo)   
  21.         m_picColor.GetWindowRect(&rectPicture);   
  22.         // 將圖片控件矩形區(qū)域的屏幕坐標(biāo)轉(zhuǎn)換為其父窗口即對(duì)話框的客戶區(qū)坐標(biāo)   
  23.         ScreenToClient(&rectPicture);   
  24.   
  25.         // 選擇新畫(huà)刷,并保存舊畫(huà)刷的指針到pOldBrush   
  26.         pOldBrush = clientDC.SelectObject(&newBrush);   
  27.         // 以新畫(huà)刷為圖片控件填充顏色   
  28.         clientDC.Rectangle(rectPicture);   
  29.   
  30.         // 恢復(fù)舊畫(huà)刷   
  31.         clientDC.SelectObject(pOldBrush);   
  32.         // 刪除新畫(huà)刷   
  33.         newBrush.DeleteObject();   
  34.     }   
  35. }  

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

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

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

    

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

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

聯(lián)系客服