版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、需要V軟件,請(qǐng)點(diǎn)擊或 復(fù)制: http:/ w919438179.81.fyCIan/定義對(duì)象和對(duì)象指針 /用對(duì)象輸出周長(zhǎng)和面積 cout周長(zhǎng)為:rect.circum()endl;/輸出周長(zhǎng) cout面積為:rect.area()endl;/輸出面積 /用對(duì)象指針輸出周長(zhǎng)和面積 cout周長(zhǎng)為:circum()endl;/輸出周長(zhǎng) cout面積為:area()endl;/輸出面積 CRect:CRect(int len,int wid)/定義帶參構(gòu)造函數(shù) length=len; width=wid; cout建立對(duì)象endl; CRect:CRect()/定義析構(gòu)函數(shù) cout撤銷對(duì)象end
2、l; double CRect:circum()/定義周長(zhǎng)函數(shù) return 2*(length+width); double CRect:area()/定義面積函數(shù) return length*width; #includeiostream.h class CRect/定義長(zhǎng)方形類 public: CRect(int,int);/聲明帶參構(gòu)造函數(shù) CRect();/聲明析構(gòu)函數(shù) double circum();/聲明周長(zhǎng)函數(shù) double area();/聲明面積函數(shù) private: int length;/聲明長(zhǎng)方形的長(zhǎng)度 int width;/聲明長(zhǎng)方形的寬度 ; void main(
3、) CCube *p=new CCube(30,20,100); cout立方體的體積為:volume()endl; delete p; CRect:CRect(int len,int wid) /基類帶參構(gòu)造函數(shù) length=len; width=wid; cout建立基類對(duì)象endl; CRect:CRect()/基類析構(gòu)函數(shù) cout撤銷基類對(duì)象endl; double CRect:area()/基類面積函數(shù) return length*width; double CRect:circum()/基類周長(zhǎng)函數(shù) return 2*(length+width); #includeiostre
4、am.h class CRect/基類 public: CRect(int,int); CRect(); double circum(); double area(); protected: int length; int width; ; class CCube:public CRect/公有繼承派生類 public: CCube(int,int,int); CCube(); double volume();/新增面積成員函數(shù) private: int height; /新增高度數(shù)據(jù)成員 ; CCube:CCube(int len,int wid,int hei):CRect(len,wid
5、) /派生類構(gòu)造函數(shù) height=hei; cout建立派生類對(duì)象endl; CCube:CCube()/派生類析構(gòu)函數(shù) cout撤銷派生類對(duì)象SetPixel(20,20,RGB(255,0,0);pDC-SetPixel(20,20,RGB(255,0,0); c=pDC-GetPixel(20,20);c=pDC-GetPixel(20,20); pDC-SetPixel(60,20,c);pDC-SetPixel(60,20,c); 畫筆繪制邊界默認(rèn)的畫筆是畫筆繪制邊界默認(rèn)的畫筆是1 1像素寬的黑色實(shí)線筆。像素寬的黑色實(shí)線筆。 類屬:類屬:CPen:CreatPen CPen:Cre
6、atPen 原型:原型:BOOL CreatePen(int nPenStyleBOOL CreatePen(int nPenStyle,int nWidthint nWidth, COLORREF crColor); COLORREF crColor); 返回值:非零。返回值:非零。 參數(shù)說(shuō)明:參數(shù)說(shuō)明: 第一個(gè)參數(shù)第一個(gè)參數(shù)nPenStylenPenStyle是畫筆的風(fēng)格代碼,第二個(gè)參數(shù)是畫筆的風(fēng)格代碼,第二個(gè)參數(shù) nWidthnWidth是畫筆的寬度,第三個(gè)參數(shù)是畫筆的寬度,第三個(gè)參數(shù)crColorcrColor是畫筆的顏是畫筆的顏 色。色。 類屬:類屬:CPen:SelectObjec
7、t CPen:SelectObject 原型:原型:Cpen Cpen * *SelectObject(Cpen SelectObject(Cpen * *pPen);pPen); 返回值:被替代畫筆的指針。返回值:被替代畫筆的指針。 參數(shù)說(shuō)明:參數(shù)參數(shù)說(shuō)明:參數(shù)pPenpPen是是CpenCpen類的被選中的新畫筆對(duì)象指類的被選中的新畫筆對(duì)象指 針。本函數(shù)把原畫筆換成新畫筆,同時(shí)返回指向原畫筆針。本函數(shù)把原畫筆換成新畫筆,同時(shí)返回指向原畫筆 的指針。的指針。 類屬:類屬:CGdiObject:DeleteObject CGdiObject:DeleteObject 原型:原型:BOOL De
8、leteObject( );BOOL DeleteObject( ); 返回值:非零。返回值:非零。 參數(shù)說(shuō)明:畫筆使用完畢,把已成自由狀態(tài)的畫筆從參數(shù)說(shuō)明:畫筆使用完畢,把已成自由狀態(tài)的畫筆從 系統(tǒng)內(nèi)存中清除。系統(tǒng)內(nèi)存中清除。 類屬:類屬:CDC:SelectStockObject CDC:SelectStockObject 原型:原型: virtual CGdiObjectvirtual CGdiObject * *SelectStockObject(int nIndex);SelectStockObject(int nIndex); 返回值:被替代的返回值:被替代的CGdiObjectC
9、GdiObject類對(duì)象的指針。類對(duì)象的指針。 參數(shù)說(shuō)明:參數(shù)參數(shù)說(shuō)明:參數(shù)nIndexnIndex是庫(kù)筆代碼。是庫(kù)筆代碼。 Windows Windows系統(tǒng)中準(zhǔn)備了一些使用頻率較高的畫筆,不系統(tǒng)中準(zhǔn)備了一些使用頻率較高的畫筆,不 需要?jiǎng)?chuàng)建,可以直接選用。同樣,使用完庫(kù)畫筆時(shí)需要?jiǎng)?chuàng)建,可以直接選用。同樣,使用完庫(kù)畫筆時(shí) 也不需要調(diào)用也不需要調(diào)用DeleteObject()DeleteObject()函數(shù)從內(nèi)存中刪除已函數(shù)從內(nèi)存中刪除已 使用過(guò)的畫筆。使用過(guò)的畫筆。 VC+VC+中的畫刷用于對(duì)圖形內(nèi)部進(jìn)行填充。中的畫刷用于對(duì)圖形內(nèi)部進(jìn)行填充。 創(chuàng)建實(shí)體畫刷函數(shù)創(chuàng)建實(shí)體畫刷函數(shù) BOOL Cre
10、ateSolidBrush(COLORREF crColor );BOOL CreateSolidBrush(COLORREF crColor ); 選擇畫刷函數(shù)選擇畫刷函數(shù) CBrush CBrush * *SelectObject(CBrush SelectObject(CBrush * *pBrush );pBrush ); 刪除畫刷函數(shù)刪除畫刷函數(shù) BOOL DeleteObject( );BOOL DeleteObject( ); 創(chuàng)建陰影畫刷函數(shù)創(chuàng)建陰影畫刷函數(shù) BOOL CreateHatchBrush(int nIndex,COLORREF BOOL CreateHatchBr
11、ush(int nIndex,COLORREF crColor);crColor); 第一個(gè)參數(shù)第一個(gè)參數(shù)nIndexnIndex是陰影樣式代碼,第二個(gè)參數(shù)是陰影樣式代碼,第二個(gè)參數(shù) crColorcrColor是陰影線的顏色是陰影線的顏色 選擇一只庫(kù)畫刷函數(shù)選擇一只庫(kù)畫刷函數(shù) virtual CGdiObject virtual CGdiObject * *SelectStockObject(int SelectStockObject(int nIndex);nIndex); 設(shè)置直線的起點(diǎn)位置設(shè)置直線的起點(diǎn)位置 CPoint MoveTo(int xCPoint MoveTo(int x,
12、int y);int y); 設(shè)置直線的終點(diǎn)位置設(shè)置直線的終點(diǎn)位置 BOOL LineTo (int xBOOL LineTo (int x,int y);int y); 參數(shù)說(shuō)明:參數(shù)說(shuō)明: 采用起點(diǎn)閉區(qū)間,終點(diǎn)開(kāi)區(qū)間的處理方法,繪制直線采用起點(diǎn)閉區(qū)間,終點(diǎn)開(kāi)區(qū)間的處理方法,繪制直線 的函數(shù)不指定直線的顏色,直線顏色可以通過(guò)畫筆函的函數(shù)不指定直線的顏色,直線顏色可以通過(guò)畫筆函 數(shù)來(lái)指定。數(shù)來(lái)指定。 void CTestView:OnDraw(CDC* pDC) CTestDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); CPen NewPen,*p
13、OldPen; NewPen.CreatePen(PS_SOLID,1,RGB(0,0,255); pOldPen=pDC-SelectObject( pDC-MoveTo(20,30); pDC-LineTo(200,300); pDC-SelectObject(pOldPen); NewPen.DeleteObject(); 類屬:類屬:CDC:Rectangle CDC:Rectangle 原型:原型:BOOL Rectangle(int x1BOOL Rectangle(int x1,int y1int y1,int x2int x2,int int y2);y2); 返回值:非零。返
14、回值:非零。 參數(shù)說(shuō)明:該函數(shù)使用當(dāng)前畫刷填充矩形內(nèi)部,并用當(dāng)參數(shù)說(shuō)明:該函數(shù)使用當(dāng)前畫刷填充矩形內(nèi)部,并用當(dāng) 前畫筆繪制矩形邊界線。前畫筆繪制矩形邊界線。 例例6 6 繪制左上角點(diǎn)為(繪制左上角點(diǎn)為(100,100)100,100),右下角點(diǎn)為,右下角點(diǎn)為 (600,300600,300)的矩形。矩形邊框?yàn)橐幌袼貙挼乃{(lán)色邊)的矩形。矩形邊框?yàn)橐幌袼貙挼乃{(lán)色邊 界線,內(nèi)部填充紅色。界線,內(nèi)部填充紅色。 void CTestView:OnDraw(CDCvoid CTestView:OnDraw(CDC* * pDC) pDC) CTestDocCTestDoc* * pDoc = GetDoc
15、ument(); pDoc = GetDocument(); ASSERT_VALID(pDoc);ASSERT_VALID(pDoc); CPen NewPen,CPen NewPen,* *pOldPen; pOldPen; NewPen.CreatePen(PS_SOLID,1,RGB(0,0,255); NewPen.CreatePen(PS_SOLID,1,RGB(0,0,255); pOldPen=pDC-SelectObject( pOldPen=pDC-SelectObject( CBrush NewBrush,CBrush NewBrush,* *pOldBrush;pOld
16、Brush; NewBrush.CreateSolidBrush(RGB(255,0,0);NewBrush.CreateSolidBrush(RGB(255,0,0); pOldBrush=pDC-SelectObject( pOldBrush=pDC-SelectObject( pDC-Rectangle(100,100,600,300);/ pDC-Rectangle(100,100,600,300);/畫矩形畫矩形 pDC-SelectObject(pOldPen); / pDC-SelectObject(pOldPen); /框線為藍(lán)色框線為藍(lán)色 NewPen.DeleteObjec
17、t(); NewPen.DeleteObject(); pDC-SelectObject(pOldBrush); / pDC-SelectObject(pOldBrush); /填充為紅色填充為紅色 NewBrush.DeleteObject();NewBrush.DeleteObject(); 類屬:類屬:CDC:Ellipse CDC:Ellipse 原型:原型:BOOL Ellipse(int x1BOOL Ellipse(int x1,int y1int y1,int x2int x2, int y2); int y2); 返回值:非零。返回值:非零。 參數(shù)說(shuō)明:參數(shù)說(shuō)明:Ellips
18、eEllipse函數(shù)中,參數(shù)函數(shù)中,參數(shù)x1x1,y1y1是限定橢是限定橢 圓范圍的外接矩形左上角點(diǎn)的坐標(biāo);參數(shù)圓范圍的外接矩形左上角點(diǎn)的坐標(biāo);參數(shù)x2x2,y2y2 是限定橢圓范圍的外接矩形右下角點(diǎn)的坐標(biāo)是限定橢圓范圍的外接矩形右下角點(diǎn)的坐標(biāo). . 注意注意VC+VC+中沒(méi)有專門的畫圓函數(shù),只是把圓中沒(méi)有專門的畫圓函數(shù),只是把圓 繪制為長(zhǎng)半軸和短半軸相等的橢圓。繪制為長(zhǎng)半軸和短半軸相等的橢圓。EllipseEllipse函數(shù)函數(shù) 使用當(dāng)前畫刷填充橢圓內(nèi)部,并用當(dāng)前畫筆繪制使用當(dāng)前畫刷填充橢圓內(nèi)部,并用當(dāng)前畫筆繪制 橢圓邊界線。橢圓邊界線。 例例7 7 將一個(gè)圓繪制在視區(qū)中央,圓的形狀依據(jù)視區(qū)
19、形狀而將一個(gè)圓繪制在視區(qū)中央,圓的形狀依據(jù)視區(qū)形狀而 定。當(dāng)窗口的形狀發(fā)生改變時(shí),圓的形狀也隨之改變。坐定。當(dāng)窗口的形狀發(fā)生改變時(shí),圓的形狀也隨之改變。坐 標(biāo)系的中點(diǎn)位于屏幕中心,標(biāo)系的中點(diǎn)位于屏幕中心,X X軸向右,軸向右,Y Y軸向上。圓的邊界軸向上。圓的邊界 為一像素寬的藍(lán)色邊界線,內(nèi)部填充為紅色。為一像素寬的藍(lán)色邊界線,內(nèi)部填充為紅色。 void CTestView:OnDraw(CDC* pDC) CTestDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); / TODO: add draw code for native data here
20、 CRect Rect; GetClientRect( pDC-SetMapMode(MM_ANISOTROPIC); pDC-SetWindowExt(Rect.Width(), Rect.Height(); pDC-SetViewportExt(Rect.Width(), -Rect.Height(); pDC-SetViewportOrg(Rect.Width()/2, Rect.Height()/2); CPen NewPen,*pOldPen; NewPen.CreatePen(PS_SOLID,1,RGB(0,0,255); pOldPen=pDC-SelectObject( CB
21、rush NewBrush,*pOldBrush; NewBrush.CreateSolidBrush(RGB(255,0,0); pOldBrush=pDC-SelectObject( pDC-Ellipse(-Rect.Width()/2,Rect.Height()/2, Rect.Width()/2,-Rect.Height()/2); pDC-SelectObject(pOldPen); NewPen.DeleteObject(); pDC-SelectObject(pOldBrush); NewBrush.DeleteObject(); void CTestView:OnDraw(C
22、DC* pDC) CTestDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); / TODO: add draw code for native data here CPen NewPen,*pOldPen; NewPen.CreatePen(PS_SOLID,1,RGB(0,0,255); pOldPen=pDC-SelectObject( pDC-Arc(100,100,600,300,100,200, 350,600); pDC-SelectObject(pOldPen); NewPen.DeleteObject(); BOOL Polygon(
23、LPPOINT lpPointsBOOL Polygon(LPPOINT lpPoints,int Count);int Count); 參數(shù)說(shuō)明:參數(shù)說(shuō)明: 第一個(gè)參數(shù)第一個(gè)參數(shù)lpPointslpPoints指定多邊形頂點(diǎn)數(shù)組中每一個(gè)頂指定多邊形頂點(diǎn)數(shù)組中每一個(gè)頂 點(diǎn)是一個(gè)點(diǎn)是一個(gè)POINTPOINT結(jié)構(gòu)或結(jié)構(gòu)或CPointCPoint對(duì)象。對(duì)象。 第二個(gè)參數(shù)第二個(gè)參數(shù)nCountnCount指定多邊形數(shù)組中的頂點(diǎn)個(gè)數(shù)。指定多邊形數(shù)組中的頂點(diǎn)個(gè)數(shù)。 該函數(shù)用當(dāng)前畫筆繪制多邊形邊界線,用當(dāng)前畫刷填該函數(shù)用當(dāng)前畫筆繪制多邊形邊界線,用當(dāng)前畫刷填 充多邊形內(nèi)部。充多邊形內(nèi)部。 void CTes
24、tView:OnDraw(CDC* pDC) CTestDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); / TODO: add draw code for native data here CRect Rect; GetClientRect( CPen NewPen(PS_SOLID,5,RGB(0,0,255); CPen* pOldPen=pDC-SelectObject( CBrush NewBrush(RGB(255,0,0); CBrush *pOldBrush = pDC-SelectObject( CPoint p4; p0.x=Re
25、ct.left+Rect.Width()/2;p0.y=Rect.top; p1.x=Rect.right;p1.y=Rect.top+Rect.Height()/2; p2.x=p0.x;p2.y=Rect.bottom; p3.x=Rect.left;p3.y=p1.y; pDC-Polygon(p,4); pDC-SelectObject(pOldPen); pDC-SelectObject(pOldBrush); 類屬:類屬:CDC:FillRect CDC:FillRect 原型:原型:void FillRect(LPCRECT lpRectvoid FillRect(LPCRECT
26、 lpRect,CBrush CBrush * *pBrush);pBrush); 返回值:無(wú)。返回值:無(wú)。 參數(shù)說(shuō)明:參數(shù)說(shuō)明: 第一個(gè)參數(shù)第一個(gè)參數(shù)lpRectlpRect指定矩形,是一個(gè)指定矩形,是一個(gè)RectRect結(jié)構(gòu)或結(jié)構(gòu)或CRectCRect 對(duì)象;對(duì)象; 第二個(gè)參數(shù)第二個(gè)參數(shù)pBrushpBrush指定畫刷對(duì)象指針。指定畫刷對(duì)象指針。 該函數(shù)將用當(dāng)前畫刷填充矩形內(nèi)部,但不畫邊界線。該函數(shù)將用當(dāng)前畫刷填充矩形內(nèi)部,但不畫邊界線。 void CTestView:OnDraw(CDC* pDC) CTestDoc* pDoc = GetDocument(); ASSERT_VALID
27、(pDoc); / TODO: add draw code for native data here CRect Rect; CBrush pNewBrush(RGB(255,0,0); CBrush *pOldBrush=pDC- SelectObject(/定義紅色畫刷定義紅色畫刷 Rect.left=100;Rect.top=100;Rect.right=400;Rect.bot tom=200; pDC-FillRect(Rect,/填充矩形內(nèi)部填充矩形內(nèi)部 pDC-SelectObject(pOldBrush);/恢復(fù)畫刷恢復(fù)畫刷 。 void CTestView:OnDraw(CD
28、C* pDC) CTestDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); / TODO: add draw code for native data here /繪制第1個(gè)多邊形,用路徑層填充 CPoint p7; p0=CPoint(340,240);p1=CPoint(260,160); p2=CPoint(220,260);p3=CPoint(260,370); p4=CPoint(320,300);p5=CPoint(360,380); p6=CPoint(440,220); CBrush NewBrush; NewBrush.Create
29、SolidBrush(RGB(255,0,0); CBrush *pOldBrush=pDC-SelectObject( pDC-BeginPath(); pDC-MoveTo(p0); /繪制多邊形 for(int i=1;iLineTo(pi); pDC-LineTo(p0); pDC-EndPath(); pDC-FillPath(); /填充多邊形 pDC-TextOut(230,450,FillPath函數(shù)填充多邊形); /繪制第2個(gè)多邊形,用畫刷填充 p0=CPoint(740,240);p1=CPoint(660,160); p2=CPoint(620,260);p3=CPoin
30、t(660,370); p4=CPoint(720,300);p5=CPoint(760,380); p6=CPoint(840,220); pDC-Polygon(p,7); /繪制并填充多邊形 pDC-TextOut(630,450,Polygon函數(shù)填充多邊形); pDC-SelectObject(pOldBrush); NewBrush.DeleteObject(); 導(dǎo)入位圖導(dǎo)入位圖 BOOL LoadBitmap(UINT nIDResource );BOOL LoadBitmap(UINT nIDResource ); 參數(shù)參數(shù)nIDResourcenIDResource是資源的
31、是資源的IDID編號(hào)編號(hào) 建立與位圖相應(yīng)的內(nèi)存設(shè)備上下文建立與位圖相應(yīng)的內(nèi)存設(shè)備上下文 virtual BOOL CreateCompatibleDC( CDCvirtual BOOL CreateCompatibleDC( CDC* * pDC ); pDC ); 參數(shù)參數(shù)pDCpDC是設(shè)備上下文的指針,用于在向屏幕輸出圖形是設(shè)備上下文的指針,用于在向屏幕輸出圖形 前作準(zhǔn)備。前作準(zhǔn)備。 選擇位圖函數(shù)選擇位圖函數(shù) CBitmap CBitmap * *SelectObject( CBitmap SelectObject( CBitmap * *pBitmap );pBitmap ); 參數(shù)參數(shù)
32、pBitmappBitmap是是CBitmapCBitmap類的被選中的新位圖指針對(duì)象。類的被選中的新位圖指針對(duì)象。 把原位圖換成新位圖,同時(shí)返回指向原位圖的指針。把原位圖換成新位圖,同時(shí)返回指向原位圖的指針。 傳送位圖函數(shù)傳送位圖函數(shù) BOOL BitBlt( int x, int y, int nWidth, int BOOL BitBlt( int x, int y, int nWidth, int nHeight, CDCnHeight, CDC* * pSrcDC, int xSrc, int ySrc, DWORD pSrcDC, int xSrc, int ySrc, DWORD
33、 dwRop );dwRop ); 參數(shù)參數(shù)x x,y y是目標(biāo)區(qū)域的左上角點(diǎn)坐標(biāo)是目標(biāo)區(qū)域的左上角點(diǎn)坐標(biāo) 參數(shù)參數(shù)nWidthnWidth和和nHeightnHeight是目標(biāo)區(qū)域的寬度和高度是目標(biāo)區(qū)域的寬度和高度 參數(shù)參數(shù)pSrcDCpSrcDC是源設(shè)備上下文的指針是源設(shè)備上下文的指針 參數(shù)參數(shù)xSrcxSrc和和ySrcySrc是源位圖的左上角點(diǎn)坐標(biāo)是源位圖的左上角點(diǎn)坐標(biāo) 參數(shù)參數(shù)dwRopdwRop是光柵操作碼是光柵操作碼 例如例如dwRopdwRopSRCCOPYSRCCOPY,表示將原位圖直接拷貝到目標(biāo)位,表示將原位圖直接拷貝到目標(biāo)位 圖。圖。 void CTestView:OnD
34、raw(CDC* pDC) CTestDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); / TODO: add draw code for native data here CRect Rect; GetClientRect( CDC MemDC; CBitmap NewBitmap,*pOldBitmap; NewBitmap.LoadBitmap(IDB_BITMAP1); MemDC.CreateCompatibleDC(pDC); pOldBitmap=MemDC.SelectObject( pDC-BitBlt(0,0,Rect.Width
35、(),Rect.Height(), MemDC.SelectObject(pOldBitmap); 文本顏色設(shè)置函數(shù)文本顏色設(shè)置函數(shù) 類屬:類屬:CDC:SetTextColorCDC:SetTextColor 原型:原型:virtual COLORREFSetTextColor( COLORREF virtual COLORREFSetTextColor( COLORREF crColor); crColor); 返回值:原文本顏色的返回值:原文本顏色的RGBRGB值。值。 參數(shù)說(shuō)明:指定文本顏色。參數(shù)說(shuō)明:指定文本顏色。 文本背景顏色設(shè)置函數(shù)文本背景顏色設(shè)置函數(shù) 類屬:類屬:CDC:Set
36、BkColorCDC:SetBkColor 原型:原型:virtual COLORREFSetBkColor( COLORREF virtual COLORREFSetBkColor( COLORREF crColor); crColor); 返回值:原文本背景色的返回值:原文本背景色的RGBRGB值。值。 參數(shù)說(shuō)明:指定文本背景顏色。參數(shù)說(shuō)明:指定文本背景顏色。 (3)(3)文本背景模式設(shè)置函數(shù)文本背景模式設(shè)置函數(shù) 類屬:類屬:CDC:SetBkModeCDC:SetBkMode 原型:原型:virtual COLORREF SetBkColor(int nBkMode);virtual C
37、OLORREF SetBkColor(int nBkMode); 返回值:原文本背景色的返回值:原文本背景色的RGBRGB值。值。 參數(shù)說(shuō)明:參數(shù)說(shuō)明:nBkModenBkMode指定文本是否透明,有兩個(gè)取值:指定文本是否透明,有兩個(gè)取值: OPAQUE OPAQUE 文本背景用當(dāng)前背景顏色填充;文本背景用當(dāng)前背景顏色填充;TRANSPARENTTRANSPARENT文文 本背景透明。本背景透明。 (4)(4)文本輸出函數(shù)文本輸出函數(shù) 類屬:類屬:CDC:TextOutCDC:TextOut 原型:原型:BOOL TextOut(int xBOOL TextOut(int x,int yint
38、 y,const CStringstr); 返回值:非零。返回值:非零。 參數(shù)說(shuō)明:參數(shù)參數(shù)說(shuō)明:參數(shù)x x,y y是文本的起點(diǎn)坐標(biāo),參數(shù)是文本的起點(diǎn)坐標(biāo),參數(shù)strstr是是 CStringCString對(duì)象。對(duì)象。 文本格式函數(shù)文本格式函數(shù) 類屬:類屬:CString:FormatCString:Format 原型:原型:void Format( LPCTSTR lpszFormat, . );void Format( LPCTSTR lpszFormat, . ); 返回值:無(wú)。返回值:無(wú)。 參數(shù)說(shuō)明:參數(shù)參數(shù)說(shuō)明:參數(shù)lpszFormatlpszFormat是格式控制字符串,如是格式控
39、制字符串,如 d d、f f、c c等。等。 此成員函數(shù)用來(lái)將格式化數(shù)據(jù)寫入一個(gè)此成員函數(shù)用來(lái)將格式化數(shù)據(jù)寫入一個(gè)CStringCString 中中, ,其方法就像其方法就像sprintfsprintf函數(shù)向一個(gè)函數(shù)向一個(gè)C-C-風(fēng)格的字符數(shù)組風(fēng)格的字符數(shù)組 中格式化輸出數(shù)據(jù)一樣中格式化輸出數(shù)據(jù)一樣 void CTestView:OnDraw(CDCvoid CTestView:OnDraw(CDC* * pDC) pDC) CTestDocCTestDoc* * pDoc = GetDocument(); pDoc = GetDocument(); ASSERT_VALID(pDoc);AS
40、SERT_VALID(pDoc); / TODO: add draw code for native data here / TODO: add draw code for native data here int a1=5,b1=8;int a1=5,b1=8; double a2=5.2,b2=8.3; double a2=5.2,b2=8.3; CString data,c=BoChuang Research Institute; CString data,c=BoChuang Research Institute; pDC-SetTextColor(RGB(255,0,0); pDC-
41、SetTextColor(RGB(255,0,0); pDC-SetBkColor(RGB(255,255,0); pDC-SetBkColor(RGB(255,255,0); pDC-TextOut(100,100,Compute Graphics Based on pDC-TextOut(100,100,Compute Graphics Based on VC+!);/ VC+!);/輸出文本輸出文本1 1 data.Format(%s,c);/ data.Format(%s,c);/輸出文本輸出文本2 2 pDC-TextOut(330,100,data); pDC-TextOut(33
42、0,100,data); data.Format(%d,%d,a1,b1);/ data.Format(%d,%d,a1,b1);/輸出整數(shù)輸出整數(shù) pDC-TextOut(100,130,data); pDC-TextOut(100,130,data); data.Format(%f,%f,a2,b2);/ data.Format(%f,%f,a2,b2);/輸出小數(shù)輸出小數(shù) pDC-TextOut(130,130,data); pDC-TextOut(130,130,data); MemDC.SetMapMode(MM_ANISOTROPIC); MemDC.SetMapMode(MM_A
43、NISOTROPIC); MemDC.SetWindowExt(Rect.Width(),Rect.Height();MemDC.SetWindowExt(Rect.Width(),Rect.Height(); MemDC.SetViewportExt(Rect.Width(),-Rect.Height();MemDC.SetViewportExt(Rect.Width(),-Rect.Height(); MemDC.SetViewportOrg(Rect.Width()/2,Rect.Height()/2);MemDC.SetViewportOrg(Rect.Width()/2,Rect.H
44、eight()/2); MemDC.SelectStockObject(NULL_BRUSH);MemDC.SelectStockObject(NULL_BRUSH); for(int i=0;i20;i+)for(int i=0;iBitBlt(-Rect.Width()/2,-Rect.Height()/2,pDC-BitBlt(-Rect.Width()/2,-Rect.Height()/2, Rect.Width(),Rect.Height(), -Rect.Height()/2,SRCCOPY); MemDC.SelectObject(pOldBitmap);MemDC.Select
45、Object(pOldBitmap); NewBitmap.DeleteObject();NewBitmap.DeleteObject(); MemDC.DeleteDC();MemDC.DeleteDC(); void CTestView:OnDraw(CDCvoid CTestView:OnDraw(CDC* * pDC) pDC) CTestDocCTestDoc* * pDoc = GetDocument(); pDoc = GetDocument(); ASSERT_VALID(pDoc);ASSERT_VALID(pDoc); / TODO: add draw code for n
46、ative data here/ TODO: add draw code for native data here CRect Rect;CRect Rect; GetClientRect(GetClientRect( pDC-SetMapMode(MM_ANISOTROPIC);pDC-SetMapMode(MM_ANISOTROPIC); pDC-SetWindowExt(Rect.Width(),Rect.Height();pDC-SetWindowExt(Rect.Width(),Rect.Height(); pDC-SetViewportExt(Rect.Width(),-Rect.
47、Height();pDC-SetViewportExt(Rect.Width(),-Rect.Height(); pDC-SetViewportOrg(Rect.Width()/2,Rect.Height()/2);pDC-SetViewportOrg(Rect.Width()/2,Rect.Height()/2); CDC MemDC;CDC MemDC; CBitmap NewBitmap,CBitmap NewBitmap,* *pOldBitmap;pOldBitmap; MemDC.CreateCompatibleDC(pDC); MemDC.CreateCompatibleDC(p
48、DC); NewBitmap.CreateCompatibleBitmap(pDC,Rect.Width(),Rect.NewBitmap.CreateCompatibleBitmap(pDC,Rect.Width(),Rect. Height();Height(); pOldBitmap=MemDC.SelectObject( pOldBitmap=MemDC.SelectObject( MemDC.FillSolidRect(Rect,pDC-GetBkColor();MemDC.FillSolidRect(Rect,pDC-GetBkColor(); 在在VC+VC+程序中輸出圖形和文本
49、時(shí),如果不在程序中輸出圖形和文本時(shí),如果不在 OnDrawOnDraw函數(shù)中輸出,則需要設(shè)置輸出對(duì)象的設(shè)備上下函數(shù)中輸出,則需要設(shè)置輸出對(duì)象的設(shè)備上下 文,然后才能調(diào)用相應(yīng)的文,然后才能調(diào)用相應(yīng)的CDCCDC類的成員函數(shù),最后還類的成員函數(shù),最后還 需要保證將設(shè)備上下文釋放給需要保證將設(shè)備上下文釋放給WindowsWindows,恢復(fù)原來(lái)的,恢復(fù)原來(lái)的 狀態(tài)以備下次調(diào)用。狀態(tài)以備下次調(diào)用。 1.1.獲得設(shè)備上下文獲得設(shè)備上下文 類屬:類屬:CWnd:GetDC( )CWnd:GetDC( ) 原型:原型:CDCCDC* * GetDC( ); GetDC( ); 返回值:指定的客戶區(qū)設(shè)備上下文
50、指針。返回值:指定的客戶區(qū)設(shè)備上下文指針。 參數(shù)說(shuō)明:獲得指定的窗口客戶區(qū)的設(shè)備上下文。參數(shù)說(shuō)明:獲得指定的窗口客戶區(qū)的設(shè)備上下文。 2.2.釋放設(shè)備上下文釋放設(shè)備上下文 類屬:類屬:CWnd:ReleaseDCCWnd:ReleaseDC 原型:原型:int ReleaseDC(CDCint ReleaseDC(CDC* * pDC); pDC); 返回值:非零。返回值:非零。 參數(shù)說(shuō)明:釋放指定客戶區(qū)的設(shè)備上下文。參數(shù)說(shuō)明:釋放指定客戶區(qū)的設(shè)備上下文。 第第1 1種方法:使用種方法:使用OnDrawOnDraw成員函數(shù)。成員函數(shù)。 void CTestView:OnDraw(CDCvoid
51、 CTestView:OnDraw(CDC* * pDC) pDC) CTestDocCTestDoc* * pDoc = GetDocument(); pDoc = GetDocument(); ASSERT_VALID(pDoc);ASSERT_VALID(pDoc); / TODO: add draw code for native data here/ TODO: add draw code for native data here pDC-MoveTo(20,30);pDC-MoveTo(20,30); pDC-LineTo(200,300);pDC-LineTo(200,300);
52、 在在MFCMFC框架中的框架中的FileViewFileView面板中,雙擊面板中,雙擊TestView.cppTestView.cpp, 在該文件最后添加成員函數(shù)在該文件最后添加成員函數(shù)DrawLineDrawLine的定義:的定義: void CTestView:DrawLine()void CTestView:DrawLine() CDC CDC * *pDC=GetDC();pDC=GetDC(); pDC-MoveTo(20,30);pDC-MoveTo(20,30); pDC-LineTo(200,300);pDC-LineTo(200,300); ReleaseDC(pDC);
53、ReleaseDC(pDC); 第第2 2種方法:使用種方法:使用CDC CDC * *pDCpDC的菜單調(diào)用方式。的菜單調(diào)用方式。 在在FileViewFileView面板中,雙擊面板中,雙擊TestView.hTestView.h,在該文件中的,在該文件中的 “public:”public:”下面加入成員函數(shù)聲明:下面加入成員函數(shù)聲明:void void DrawLine();DrawLine(); 在菜單中添加菜單函數(shù)在菜單中添加菜單函數(shù)OnMenudrawlineOnMenudrawline調(diào)用調(diào)用DrawLineDrawLine 成員函數(shù)。成員函數(shù)。 void CTestView:O
54、nMENU DrawmyLine( ) void CTestView:OnMENU DrawmyLine( ) / TODO: Add your command handler code here/ TODO: Add your command handler code here DrawLine();DrawLine(); 第第3 3種方法:使用種方法:使用CClientDC dc(this)CClientDC dc(this)的菜單調(diào)用方式。的菜單調(diào)用方式。 本章是學(xué)習(xí)后續(xù)章節(jié)的基礎(chǔ),介紹了面向?qū)ο蟊菊率菍W(xué)習(xí)后續(xù)章節(jié)的基礎(chǔ),介紹了面向?qū)ο?程序設(shè)計(jì)基礎(chǔ),包括程序設(shè)計(jì)基礎(chǔ),包括C+C+的類、對(duì)象、繼承等概念,的類、對(duì)象、繼承等概念, 供讀者復(fù)習(xí);給出了使用供讀者復(fù)習(xí);給出了使用MFCMFC建立建立TestTest工程的上機(jī)操工程的上機(jī)操 作步驟,為以后的案例設(shè)計(jì)建立程序框架;重點(diǎn)講作步驟,為以后的案例設(shè)計(jì)建立程序框架;重點(diǎn)講 解了解了VC+VC+中的常用基本繪圖函數(shù),為以后的圖形設(shè)中的常用基本繪圖函數(shù),
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年浙科版選修6地理下冊(cè)月考試卷含答案
- 2024年浙科版選修2化學(xué)上冊(cè)月考試卷
- 創(chuàng)業(yè)公司的融資策略與實(shí)戰(zhàn)
- 醫(yī)療環(huán)境優(yōu)化結(jié)合操場(chǎng)綠化的健康理念
- 2024年物業(yè)委托合同范本:綠色社區(qū)物業(yè)委托管理創(chuàng)新協(xié)議3篇
- 2024年度車輛租賃與智能交通系統(tǒng)接入合同3篇
- 2025中國(guó)鐵建大橋工程局集團(tuán)建筑工程公司招聘高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025中國(guó)遠(yuǎn)洋海運(yùn)集團(tuán)內(nèi)部招聘中遠(yuǎn)海運(yùn)(上海)限公司招聘2人信息高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025中國(guó)石油工業(yè)出版社高校畢業(yè)生招聘11人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 可可粉行業(yè)相關(guān)投資計(jì)劃提議
- 品質(zhì)管控流程PPT課件.pptx
- 形式邏輯期末考試試卷
- 乒乓球比賽第二階段對(duì)陣圖表
- (高清版)通風(fēng)管道技術(shù)規(guī)程JGJ_T 141-2017
- 機(jī)制砂檢測(cè)報(bào)告
- 省教育廳檢查組接待方案
- 變壓器停、送電操作步驟與注意事項(xiàng)
- 氣動(dòng)潛孔錘施工方案
- 風(fēng)電項(xiàng)目監(jiān)理大綱附錄風(fēng)電工程設(shè)備監(jiān)理項(xiàng)目表
- 云南省教育科學(xué)規(guī)劃課題開(kāi)題報(bào)告 - 云南省教育科學(xué)研究院
- 二年級(jí)上,數(shù)學(xué),3個(gè)兩位數(shù)加減,80題,(豎式計(jì)算)
評(píng)論
0/150
提交評(píng)論