RM新时代官方网站

VC|MFC的CDC類及如何使用畫筆繪制各種圖形(vc應(yīng)用mfc畫圖的詳細(xì)步驟)

CDC對(duì)象提供處理顯示器或打印機(jī)等設(shè)備上下文的成員函數(shù),以及處理與窗口客戶區(qū)對(duì)應(yīng)的顯示上下文的成員。另外還為繪制文本、處理字體,使用打印機(jī)跳轉(zhuǎn),滾動(dòng)和播放元文件提供成員函數(shù)。

它還為獲取和設(shè)置繪圖屬性、映射,處理視點(diǎn)、窗口擴(kuò)展、轉(zhuǎn)換坐標(biāo),處理區(qū)域、剪貼、繪制直線及繪制簡(jiǎn)單橢圓和多邊形等形狀提供了成員函數(shù)。

可以通過CDC對(duì)象的成員函數(shù)進(jìn)行所有的繪圖。

其對(duì)象層次結(jié)構(gòu)如下:

VC|MFC的CDC類及如何使用畫筆繪制各種圖形(vc應(yīng)用mfc畫圖的詳細(xì)步驟)

類名 說明
CPaintDC 窗口用戶區(qū)的設(shè)備描述環(huán)境,在OnDraw()函數(shù)中來處理WM_PAINT消息
CClientDC 窗口客戶區(qū)的設(shè)備描述環(huán)境,但應(yīng)用在WM_PAINT消息之外的消息處理函數(shù)中
CWindowDC 在整個(gè)窗口內(nèi)(不只是用戶區(qū))繪圖的設(shè)備描述環(huán)境
CMetaFileDC 圖元文件的設(shè)備描述環(huán)境,在創(chuàng)建可以回放的圖像時(shí)使用

專門用于在應(yīng)用程序窗口客戶區(qū)繪圖的CPaintDC,是所有CDC子類中最常用的一個(gè)類。為了防止程序設(shè)計(jì)人員誤把繪圖代碼寫到其他位置,MFC規(guī)定,CPaintDC對(duì)象只在CView類的OnDraw( )函數(shù)中有效。并且為了方便和引起程序員注意,MFC AppWizard在自動(dòng)為用戶生成的CVeiw派生類代碼中就生成了如下框架代碼:

OnDraw(CDC *Pdc)

{……..}

其中,函數(shù)的參數(shù)pDC就是指向CPaintDC對(duì)象的指針。

系統(tǒng)每次創(chuàng)建應(yīng)用程序窗口及窗口需要刷新時(shí)就會(huì)產(chǎn)生WM_PAINT消息,系統(tǒng)接收到這個(gè)消息就會(huì)自動(dòng)調(diào)用OnDraw( )函數(shù)。應(yīng)用程序也可以調(diào)用相關(guān)函數(shù)來激活OnDraw( ),所以程序中所有對(duì)窗口客戶區(qū)進(jìn)行繪圖的代碼都應(yīng)該寫在這個(gè)函數(shù)中。

CDC類有很多成員函數(shù),包括繪制點(diǎn)、直線、矩形、橢圓、多邊形、文本以及位圖等的成員函數(shù)。

以下是一個(gè)小實(shí)例:

// Ch9Demo3View.cpp

void CCh9Demo3View::OnDraw(CDC* pDC)

{

CCh9Demo3Doc* pDoc = GetDocument();

ASSERT_VALID(pDoc);

// TODO: add draw code for native data here

CPen pen[5];

//創(chuàng)建實(shí)線畫筆

pen[0].CreatePen(PS_SOLID, 5, RGB(255, 0, 0));

//創(chuàng)建虛線畫筆

pen[1].CreatePen(PS_DASH, 1, RGB(0, 255, 0));

//創(chuàng)建點(diǎn)線畫筆

pen[2].CreatePen(PS_DOT, 1, RGB(0, 0, 255));

//創(chuàng)建點(diǎn)劃線畫筆

pen[3].CreatePen(PS_DASHDOT, 1, RGB(0, 255, 255));

// 創(chuàng)建雙點(diǎn)劃線畫筆

pen[4].CreatePen(PS_DASHDOTDOT, 1, RGB(255, 0, 255));

// 保存指向設(shè)備上下文原有畫筆的指針

CPen *pOldPen;

//以實(shí)線畫筆繪制矩形

pOldPen=pDC->SelectObject(&pen[0]);

pDC->Rectangle(10, 10, 110, 110);

pDC->TextOut(10, 115, \”Rectangle繪制矩形\”);

//使用虛線畫筆和函數(shù)Polyline輸出多段折線

pDC->SelectObject(&pen[1]);//載入畫筆

pDC->Rectangle(180, 10, 330, 110);//繪制矩形

CPoint pts[]={CPoint(190, 20), CPoint(200, 60), CPoint(270, 40), CPoint(210, 80),

CPoint(250, 100), CPoint(300, 30), CPoint(310, 80)};

pDC->Polyline(pts, 7);//繪制多端折線

pDC->TextOut(180, 115, \”Polyline繪制多段折線\”);

// 使用Pie和Arc輸出餅圖和弧形

pDC->SelectObject(&pen[2]);//載入點(diǎn)線畫筆

pDC->Ellipse(10, 140, 160, 240);

pDC->SelectObject(&pen[3]);//載入點(diǎn)劃線畫筆

pDC->Pie(20, 150, 150, 230, 160, 160, 10, 160);

pDC->SelectObject(&pen[4]);//載入雙點(diǎn)劃線畫筆

pDC->Arc(20, 150, 150, 230, 10, 220, 160, 220);

pDC->TextOut(10, 245, \”不同畫筆繪制橢圓、弧形和餅圖\”);

//恢復(fù)設(shè)備上下文的原有畫筆

pDC->SelectObject(pOldPen);

//刪除所創(chuàng)建的畫筆資源

for (int i=0; i<5; i )

pen[i].DeleteObject();

}

VC|MFC的CDC類及如何使用畫筆繪制各種圖形(vc應(yīng)用mfc畫圖的詳細(xì)步驟)

繪制弧形需要4個(gè)坐標(biāo)點(diǎn),函數(shù)原型如下:

Arc(int x1,int x2, int x3, int x4, int x5, int x6, int x7, int x8)

4個(gè)坐標(biāo)點(diǎn)如下圖所示:

VC|MFC的CDC類及如何使用畫筆繪制各種圖形(vc應(yīng)用mfc畫圖的詳細(xì)步驟)

Pie()函數(shù)的參數(shù)與上述Arc()函數(shù)相同。

-End-

版權(quán)聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn),該文觀點(diǎn)僅代表作者本人。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如發(fā)現(xiàn)本站有涉嫌抄襲侵權(quán)/違法違規(guī)的內(nèi)容, 請(qǐng)發(fā)送郵件至 舉報(bào),一經(jīng)查實(shí),本站將立刻刪除。

(0)
上一篇 2024年7月25日 下午6:13
下一篇 2024年7月25日 下午6:24

相關(guān)推薦

  • 安全生產(chǎn)甘特圖

    安全生產(chǎn)甘特圖安全生產(chǎn)甘特圖2006年,我國(guó)汽車快速向高速發(fā)動(dòng),創(chuàng)造了汽車高速向行,待時(shí)的天熱海明,此時(shí)的車水馬龍也來到了地球的表面,據(jù)我所知都有汽輪飛動(dòng),這也是我國(guó)汽車加速向高速…

    科研百科 2024年11月22日
    2
  • 四川省中醫(yī)科研項(xiàng)目

    四川省中醫(yī)科研項(xiàng)目 近年來,四川省中醫(yī)科研項(xiàng)目在中醫(yī)藥研究方面取得了重要進(jìn)展。該項(xiàng)目旨在通過深入挖掘和整理四川省中醫(yī)傳統(tǒng)診療方法,提升中醫(yī)臨床水平,為患者提供更好的醫(yī)療服務(wù)。 該項(xiàng)…

    科研百科 2025年1月31日
    2
  • 黨建資料怎么做范本

    黨建資料怎么做范本 在組織生活和管理工作中,黨建資料是一個(gè)非常重要的環(huán)節(jié)。黨建資料的做得好不好,直接影響到黨組織的凝聚力和戰(zhàn)斗力。因此,做好黨建資料的收集、整理、歸檔和銷毀等工作,…

    科研百科 2024年10月18日
    18
  • 科研項(xiàng)目可研報(bào)告范本

    科研項(xiàng)目可研報(bào)告范本 科研項(xiàng)目的可行性研究是確保項(xiàng)目能夠順利進(jìn)行的重要環(huán)節(jié)。通過對(duì)項(xiàng)目的背景,目標(biāo),可行性分析等進(jìn)行研究,可以確保項(xiàng)目在資金,人力,時(shí)間,技術(shù)等方面的優(yōu)勢(shì),同時(shí)也可…

    科研百科 2025年4月14日
    4
  • 房產(chǎn)合同管理

    房產(chǎn)合同管理 房產(chǎn)合同管理是房地產(chǎn)交易過程中非常重要的一環(huán),它涉及到房產(chǎn)交易的所有細(xì)節(jié),包括房屋買賣、租賃合同、租賃權(quán)轉(zhuǎn)讓等。有效的房產(chǎn)合同管理可以提高房產(chǎn)交易的安全性和效率,降低…

    科研百科 2024年8月19日
    7
  • 北京找樹網(wǎng)開票被抓

    北京找樹網(wǎng)開票被抓 近日,北京找樹網(wǎng)信息技術(shù)有限公司開票系統(tǒng)遭到黑客攻擊,該公司負(fù)責(zé)人及技術(shù)人員均被警方抓獲。這一事件引起了廣泛關(guān)注。 北京找樹網(wǎng)信息技術(shù)有限公司是一家專注于軟件開…

    科研百科 2024年10月31日
    10
  • 平臺(tái)升級(jí)培育激發(fā)新動(dòng)能(提升平臺(tái)建設(shè))

    來源:麗水日?qǐng)?bào)報(bào)業(yè)傳媒集團(tuán) 收入分配制度改革試驗(yàn)區(qū)、城鄉(xiāng)區(qū)域協(xié)調(diào)發(fā)展引領(lǐng)區(qū)、文明和諧美麗家園展示區(qū)、高質(zhì)量發(fā)展高品質(zhì)生活先行區(qū)……6月10日,《中共中央國(guó)務(wù)院關(guān)于支持浙江高質(zhì)量發(fā)展…

    科研百科 2024年3月17日
    103
  • 工會(huì)經(jīng)費(fèi)管理制度62089

    工會(huì)經(jīng)費(fèi)管理制度62089 工會(huì)經(jīng)費(fèi)管理制度62089是指工會(huì)組織在管理自身經(jīng)費(fèi)方面制定的一些規(guī)定,旨在確保工會(huì)經(jīng)費(fèi)的使用符合規(guī)定,保證工會(huì)工作的開展。 工會(huì)經(jīng)費(fèi)是工會(huì)組織用于支持…

    科研百科 2024年8月17日
    1
  • 項(xiàng)目管理采購(gòu)流程(工程項(xiàng)目管理系統(tǒng)采購(gòu))

    工程項(xiàng)目管理系統(tǒng)采購(gòu)工程項(xiàng)目管理系統(tǒng)采購(gòu)工程管理系統(tǒng)管理系統(tǒng)與管理系統(tǒng)是高等院校研究人工智能、電子科學(xué)與技術(shù)應(yīng)用、計(jì)算機(jī)網(wǎng)絡(luò)與營(yíng)銷、計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)、計(jì)算機(jī)網(wǎng)絡(luò)與信息安全與信息安全、…

    科研百科 2024年8月2日
    2
  • 企業(yè)內(nèi)控體系建設(shè)思路和方法(附內(nèi)控合同管理)

    管控風(fēng)險(xiǎn) 創(chuàng)造價(jià)值 一、內(nèi)部控制是什么? 內(nèi)部控制,是指由企業(yè)董事會(huì)(或者由企業(yè)章程規(guī)定的經(jīng)理、廠長(zhǎng)辦公會(huì)等類似的決策、治理機(jī)構(gòu),以下簡(jiǎn)稱董事會(huì))、管理層和全體員工共同實(shí)施的、旨在…

    科研百科 2022年12月3日
    628
RM新时代官方网站