可視化編程講義04_第1頁
可視化編程講義04_第2頁
可視化編程講義04_第3頁
可視化編程講義04_第4頁
可視化編程講義04_第5頁
已閱讀5頁,還剩82頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、第4章 GDI與Windows繪圖設(shè)備環(huán)境類繪圖工具繪圖函數(shù)位圖與位操作圖標(biāo)與光標(biāo)1設(shè)備文本的概念設(shè)備文本用于程序的可視化輸出設(shè)備文本提供一張畫布,可在上面書寫文字,或繪制點(diǎn)、直線、曲線等圖形既可通過屏幕顯示,還可通過打印機(jī)等設(shè)備輸出應(yīng)用程序GDI設(shè)備驅(qū)動(dòng)程序輸出設(shè)備2設(shè)備環(huán)境類(1)CDC:MFC的設(shè)備文本基類CClientDC:客戶區(qū)(不包括邊框、標(biāo)題欄和菜單欄)的設(shè)備文本類CWindowDC:程序窗口的設(shè)備文本類CPaintDC:OnPaint函數(shù)使用的設(shè)備文本類CMetaFileDC:圖元文件的設(shè)備文本類3設(shè)備環(huán)境類(2)畫線程序的例子(CDC)(添加start)void CTestV

2、iew:OnLButtonUp(UINT nFlags, CPoint point) CDC *pDC=GetDC(); pDC-MoveTo(start); pDC-LineTo(point); ReleaseDC(pDC);4設(shè)備環(huán)境類(3)畫線程序的例子(CClientDC)void CTestView:OnLButtonUp(UINT nFlags, CPoint point) CClientDC dc(this); /CClientDC dc(GetParent(); dc.MoveTo(start); dc.LineTo(point);5設(shè)備環(huán)境類(4)畫線程序的例子(CWindo

3、wDC)void CTestView:OnLButtonUp(UINT nFlags, CPoint point) CWindowDC dc(this); /CWindowDC dc(GetParent(); /CWindowDC dc(GetDesktopWindow(); dc.MoveTo(start); dc.LineTo(point); 6設(shè)備環(huán)境類(5)7繪圖的基本方法通過CClientDC構(gòu)造對(duì)象通過GetDC獲得設(shè)備環(huán)境指針CClientDC dc(this);dc.Ellipse(10,10,200,200);CDC* pDC=GetDC();pDC-Ellipse(10,1

4、0,200,200);ReleaseDC(pDC);8CPoint、CSize與CRect(1)CPoint:封裝POINT結(jié)構(gòu)的類定義一個(gè)點(diǎn)坐標(biāo),成員為x、yCRect:封裝RECT結(jié)構(gòu)的類定義一個(gè)矩形區(qū)域,成員為left、right、top、bottomCSize:封裝SIZE結(jié)構(gòu)的類定義矩形區(qū)域的大小,成員為cx、cy9CPoint、CSize與CRect(2)CPoint類的例子POINT p;p.x=10; p.y=10;pDC-TextOut(p.x,p.y,POINT為一個(gè)結(jié)構(gòu),成員只有x,y);CPoint q,q1(10,10),q2(0,90);q=q1+q2;pDC-Te

5、xtOut(q.x,q.y,CPoint為一個(gè)類,封裝POINT結(jié)構(gòu),成員有x,y等);10繪圖工具(1)設(shè)備文本類(CDC)提供繪圖工具,例如CPen、CBrush與CFont等,基類是CGdiObject默認(rèn)的畫筆是黑色,寬度是一個(gè)像素,默認(rèn)的畫刷是白色顏色由RGB值來指定RGB(Red,Green,Blue)0 x 00 FF FF FF B G R11繪圖工具(2)畫刷類型 說明畫刷類型 說明BLACK_BRUSH 黑色畫刷HOLLOW_BRUSH 透明畫刷DKGRAY_BRUSH 深灰色畫刷NULL_BRUSH 空畫刷GRAY_BRUSH 灰色畫刷BLACK_PEN 黑色畫筆LTGR

6、AY_BRUSH 淺灰色畫刷WHITE_PEN 白色畫筆WHITE_BRUSH 白色畫刷NULL_PEN 空畫筆庫存畫刷的類型12繪圖工具(3)SelectStockObject的例子pDC-SelectStockObject(BLACK_PEN);pDC-MoveTo(10,100);pDC-LineTo(550,100);pDC-SelectStockObject(LTGRAY_BRUSH);pDC-Ellipse(50,50,150,150);pDC-SelectStockObject(DKGRAY_BRUSH);pDC-Ellipse(200,50,350,150);pDC-Selec

7、tStockObject(NULL_BRUSH);pDC-Rectangle(400,50,500,150);13自定義畫筆(1)單步構(gòu)造方法兩步構(gòu)造方法畫筆風(fēng)格是實(shí)線,寬度是5,顏色是藍(lán)色CPen NewPen(PS_SOLID,5,RGB(0,0,255);CPen NewPen;NewPen.CreatePen(PS_SOLID,5,RGB(0,0,255);14自定義畫筆(2) 畫筆類型 說明 PS_SOLID 實(shí)線畫筆 PS_DASH 劃線(虛線)畫筆 PS_DASHDOT 點(diǎn)劃線畫筆 PS_DASHDOTDOT 雙點(diǎn)劃線畫筆 PS_DOT 點(diǎn)線畫筆 PS_NULL 空畫筆庫存畫筆的

8、類型(除實(shí)線外,寬度為1)15自定義畫筆(3)自定義畫筆的例子CPen NewPen;CPen *pOldPen;NewPen.CreatePen(PS_SOLID,5,RGB(0,0,255);pOldPen=pDC-SelectObject(&NewPen); pDC-Ellipse(150,100,300,200); pDC-MoveTo(100,200);pDC-LineTo(350,200);pDC-SelectObject(pOldPen); 16自定義畫筆(4)17自定義畫刷(1)實(shí)心(solid)風(fēng)格CreateSolidBrush(COLORREF crColor);網(wǎng)格(h

9、atched)風(fēng)格CreateHatchBrush(int nIndex,COLORREF crColor);模式(patterned)風(fēng)格CreatePatternBrush(CBitmap *pBitmap);18自定義畫刷(2) 網(wǎng)格樣式 說明 HS_CROSS 十字線填充 HS_HORIZONAL 水平線填充 HS_VERTICAL 垂直線填充 HS_FDIAGONAL 斜線填充 HS_BDIAGONAL 反斜線填充 HS_DIAGCROSS 斜十字線填充19自定義畫刷(3)自定義畫刷的例子CBrush NewBrush;CBrush *pOldBrush;NewBrush.Creat

10、eHatchBrush(HS_CROSS,RGB(0,0,255);pOldBrush=pDC-SelectObject(&NewBrush);pDC-Rectangle(100,100,200,200);pDC-SelectObject(pOldBrush);20自定義畫刷(4)21繪圖函數(shù)(1)繪圖函數(shù)的坐標(biāo)是邏輯單位。默認(rèn)的左上角坐標(biāo)為(0,0),邏輯單位為像素繪圖函數(shù)設(shè)置像素(SetPixel)、當(dāng)前位置(Moveto)、畫直線(Lineto)、畫弧線(Arc)、畫矩形(Rectangle)、畫橢圓(Ellipse)、畫餅圖(Pie)、畫多邊型(Polygon)22繪圖函數(shù)(2)圓角矩

11、形弧線pDC-Rectangle(100,100,300,200);pDC-MoveTo(200,150); pDC-LineTo(300,175);pDC-MoveTo(200,150); pDC-LineTo(125,100); pDC-Arc(100,100,300,200,300,175,125,100);pDC-Rectangle(100,100,300,200);pDC-RoundRect(100,100,300,200,50,40);23繪圖函數(shù)(3)餅圖多邊形pDC-Rectangle(100,100,300,200);pDC-Pie(100,100,300,200,300,1

12、00,100,100);CPoint point4;point0.x=100; point0.y=100; point1.x=200; point1.y=200;point2.x=200; point2.y=100; point3.x=100; point3.y=200;pDC-Polygon(point,4);24繪圖函數(shù)(4)用點(diǎn)線畫矩形邊框(DrawFocusRect)用畫刷填充矩形,不畫邊框(FillRect)pDC-DrawFocusRect(CRect(100,100,200,200);CBrush NewBrush;NewBrush.CreateSolidBrush(RGB(0,

13、0,255);pDC-SelectObject(&NewBrush);pDC-FillRect(CRect(100,100,200,200), &NewBrush);25繪圖函數(shù)(5)用畫刷畫矩形邊框,不填充內(nèi)部(FrameRect)CBrush NewBrush;CBrush *pOldBrush;NewBrush.CreateSolidBrush(RGB(0,0,255);pOldBrush=pDC-SelectObject(&NewBrush);pDC-FrameRect(CRect(100,100,200,200), &NewBrush);pDC-SelectObject(pOldBr

14、ush);26繪圖函數(shù)(6)在矩形區(qū)域中反顯顏色(InvertRect)CPen NewPen;CPen *pOldPen; NewPen.CreatePen(PS_SOLID,1,RGB(0,0,255); pOldPen=pDC-SelectObject(&NewPen); pDC-MoveTo(100,100);pDC-LineTo(200,200);pDC-SelectObject(pOldPen); pDC-InvertRect(CRect(100,100,200,200);27繪圖模式(1)繪圖模式指定畫筆顏色和現(xiàn)有顏色的處理SetROP2(int nDrawMode)繪圖模式R2

15、_COPYPEN(畫筆顏色)R2_NOT(畫筆顏色取反)R2_XORPEN(顯示顏色與畫筆顏色異或)28繪圖模式(2)R2_NOT的例子藍(lán)色(0 x00FF0000)反色為黃色(0 x0000FFFF)白色(0 x00FFFFFF)反色為黑色(0 x00000000)在CTestView:OnDraw()中CBrush NewBrush;CBrush *pOldBrush; NewBrush.CreateSolidBrush(RGB(0,0,255); pOldBrush=pDC-SelectObject(&NewBrush); pDC-Rectangle(100,100,300,200);p

16、DC-SelectObject(pOldBrush);29繪圖模式(3)在CTestView:OnLButtonDown()中CDC *pDC=GetDC();CPen NewPen;CPen *pOldPen;NewPen.CreatePen(PS_SOLID,3,RGB(0,0,255);pOldPen=pDC-SelectObject(&NewPen);pDC-SetROP2(R2_NOT);pDC-MoveTo(50,150); pDC-LineTo(350,150);pDC-SelectObject(pOldPen); ReleaseDC(pDC);30繪圖模式(4)31繪圖模式(5

17、)R2_XORPEN的例子0 x00FF00000 x00FF0000=0 x000000000 x00FFFFFF0 x00FF0000=0 x0000FFFF在CTestView:OnDraw()中CBrush NewBrush;CBrush *pOldBrush; NewBrush.CreateSolidBrush(RGB(0,0,255); pOldBrush=pDC-SelectObject(&NewBrush); pDC-Rectangle(100,100,300,200);pDC-SelectObject(pOldBrush);32繪圖模式(6)在CTestView:OnLBut

18、tonDown()中CDC *pDC=GetDC();CPen NewPen;CPen *pOldPen;NewPen.CreatePen(PS_SOLID,3,RGB(0,0,255);pOldPen=pDC-SelectObject(&NewPen);pDC-SetROP2(R2_XORPEN);pDC-MoveTo(50,150); pDC-LineTo(350,150);pDC-SelectObject(pOldPen); ReleaseDC(pDC);33繪圖模式(7)34CRgn與區(qū)域(1)設(shè)置區(qū)域保證繪圖時(shí)不超過給定范圍MFC的CRgn封裝區(qū)域,其成員函數(shù)有:CreateRect

19、Rgn、CreateEllipseRgn、CreatePolygonRgn等CombineRgn用于將新的區(qū)域合并CDC的FillClipRgn或PaintRgnyong填充區(qū)域,SelectClipRgn設(shè)置剪裁區(qū)域,SelectObject將區(qū)域選入設(shè)備文本35CRgn與區(qū)域(2)在CTestView:OnDraw()中pDC-DrawFocusRect(CRect(10,10,200,200); CRgn rgn;rgn.CreateRectRgn(10,10,200,200);pDC-SelectObject(rgn);pDC-MoveTo(0,50);pDC-LineTo(300,5

20、0);pDC-MoveTo(50,0);pDC-LineTo(50,300);36CRgn與區(qū)域(3)37映射模式(1)在視圖窗口繪制圖形時(shí),給定的坐標(biāo)為邏輯坐標(biāo),視圖對(duì)象的實(shí)際坐標(biāo)為設(shè)備坐標(biāo)繪圖函數(shù)的坐標(biāo)是邏輯坐標(biāo),鼠標(biāo)消息處理函數(shù)的坐標(biāo)是設(shè)備坐標(biāo)映射模式定義邏輯坐標(biāo)與設(shè)備坐標(biāo)單位的關(guān)系約束映射模式:比例因子固定非約束映射模式:由矩形區(qū)域推導(dǎo)出比例因子及軸向38映射模式(2)CDC的SetMapMode用于設(shè)置映射模式LPtoDP:邏輯坐標(biāo)轉(zhuǎn)為設(shè)備坐標(biāo)DPtoLP:設(shè)備坐標(biāo)轉(zhuǎn)為邏輯坐標(biāo)MM_TEXT:默認(rèn)映射模式,每個(gè)單位映射為一個(gè)像素,X軸向右、Y軸向下MM_HIENGLISH:每個(gè)單位映

21、射成0.001英寸,X軸向右、Y軸向上39映射模式(3)MM_TEXT與MM_HIENGLISH的區(qū)別pDC-SetMapMode(MM_TEXT);CRect rect;GetClientRect(&rect);int x=rect.right/2; int y=rect.bottom/2;pDC-SetViewportOrg(x,y); pDC-MoveTo(-20,0); pDC-LineTo(100,0); pDC-MoveTo(0,-20); pDC-LineTo(0,100); CPoint pt(100,100); int r=50; pDC-Ellipse(pt.x-r,pt.

22、y-r,pt.x+r,pt.y+r);40文本處理(1)文本輸出函數(shù)TextOut:在指定位置輸出文本DrawText:在指定矩形區(qū)域輸出文本ExtTextOut:在指定位置輸出文本,并使用當(dāng)前選擇字體TabbedTextOut:在指定位置輸出文本,并使用指定的字符間距41文本處理(2)文本屬性設(shè)置函數(shù)SetBkMode:設(shè)置背景模式SetBkColor:設(shè)置背景顏色SetTextColor:設(shè)置文本顏色SetTextAlign:設(shè)置文本對(duì)齊方式SetTextCharacterExtra:設(shè)置字符間隔值42文本處理(3)文本屬性設(shè)置的例子pDC-SetBkMode(OPAQUE);pDC-Se

23、tBkColor(RGB(0,255,255);pDC-SetTextColor(RGB(0,0,255);pDC-SetTextAlign(TA_CENTER|TA_BOTTOM);pDC-SetTextCharacterExtra(10);pDC-TextOut(100,50,設(shè)置文本屬性);pDC-MoveTo(0,50); pDC-LineTo(200,50);pDC-MoveTo(100,0); pDC-LineTo(100,100);43文本處理(4)44字符屬性(1)字符屬性包括:字符大小、行距typedef struct tagTEXTMETRIC LONG tmHeight;

24、 /字符高度 LONG tmAscent; /字符上升高度 LONG tmDescent; /字符下降高度 LONG tmExternalLeading; /行間距 TEXTMETRIC;45字符屬性(2)tmAscent與tmDescent的含義46字符屬性(3)字符屬性的例子TEXTMETRIC tm;pDC-GetTextMetrics(&tm);CString str;str.Format(字符高度(tmHeight)=%d,行間距(tmExternalLeading)=%d,tm.tmHeight,tm.tmExternalLeading);pDC-TextOut(50,50,str

25、);47字符屬性(4)CString str; CSize sz;sz=pDC-GetTextExtent(字);str.Format(字的寬度=%d,高度=%d,sz.cx,sz.cy);pDC-TextOut(50,50,str);sz=pDC-GetTextExtent(a); str.Format(a的寬度=%d,高度=%d,sz.cx,sz.cy);pDC-TextOut(50,100,str);sz=pDC-GetTextExtent(m); str.Format(m的寬度=%d,高度=%d,sz.cx,sz.cy);pDC-TextOut(50,150,str);sz=pDC-G

26、etTextExtent(i); str.Format(i的寬度=%d,高度=%d,sz.cx,sz.cy);pDC-TextOut(50,200,str);48字體操作(1)庫存字體的類型 字體類型 說明 SYSTEM_FONT 系統(tǒng)字體 SYSTEM_FIXED_FONT 固定寬度系統(tǒng)字體 ANSI_FIXED_FONT ANSI固定寬度系統(tǒng)字體 ANSI_VAR_FONT ANSI可變寬度系統(tǒng)字體 DEVICE_DEFAULT_FONT 設(shè)備相關(guān)缺省字體 OEM_FIXED_FONT OEM相關(guān)固定寬度字體49字體操作(2)庫存字體的例子pDC-TextOut(50,50,DEFAULT

27、字體);pDC-SelectStockObject(ANSI_FIXED_FONT);pDC-TextOut(50,100,ANSI_FIXED_FONT字體);pDC-SelectStockObject(SYSTEM_FONT);pDC-TextOut(50,150,SYSTEM_FONT字體);50字體操作(3)兩步構(gòu)造方法在LOGFONT結(jié)構(gòu)中定義邏輯字體調(diào)用CreateFontIndirect()函數(shù)單步構(gòu)造方法直接調(diào)用CreateFont()函數(shù)51字體操作(4)LOGFONT lf;lf.lfHeight=30; /高度為30 lf.lfWidth=0; /默認(rèn)寬度lf.lfEsc

28、apement=150; /逆時(shí)針旋轉(zhuǎn)15度lf.lfWeight=FW_BOLD; /粗體lf.lfUnderline=false; /無下劃線lf.lfItalic=false; /非斜體lf.lfStrikeOut=false; /無刪除線lf.lfCharSet=GB2312_CHARSET; /GB2312字符集CFont NewFont,*pOldFont;NewFont.CreateFontIndirect(&lf);pOldFont=pDC-SelectObject(&NewFont);pDC-TextOut(100,100,例子Example);pDC-SelectObjec

29、t(pOldFont);52位圖操作(1)BMP是與硬件無關(guān)的圖像格式,采用位映射存儲(chǔ)方式,除圖像深度可選外,不使用其它壓縮 圖像深度包括:1位(單色)、4位(16色)、8位(256色)、24位(16M色)BMP文件結(jié)構(gòu)文件頭:文件類型、大小、起始位置等信息頭:圖像大小、壓縮方法等顏色表與位圖數(shù)據(jù):在24位BMP中,每個(gè)像素由BGR表示53位圖操作(2)位圖用位模式形成圖像,MFC提供CBitmap類管理位圖,LoadBitmap()從資源裝載位圖CDC提供傳輸圖形數(shù)據(jù)的函數(shù)PatBlt():用選定畫刷填充一個(gè)矩形BitBlt():將圖像數(shù)據(jù)輸出到指定位置StetchBlt():與BitBlt

30、()類似,可改變圖像數(shù)據(jù)大小54位圖操作(3)畫刷參數(shù)的類型 畫刷參數(shù) 說明 WHITENESS 區(qū)域?yàn)榘咨?BLACKNESS 區(qū)域?yàn)楹谏?PATCOPY 畫刷復(fù)制到填充區(qū)域 PATINVERT 畫刷異或到填充區(qū)域 DSTINVERT 填充區(qū)域被反相55位圖操作(4)PatBlt的例子CBitmap bm; bm.LoadBitmap(IDB_MYBITMAP);CBrush NewBrush,*pOldBrush;NewBrush.CreatePatternBrush(&bm);pOldBrush=pDC-SelectObject(&NewBrush);RECT rect; GetClie

31、ntRect(&rect);pDC-PatBlt(0,0,rect.right,rect.bottom, PATCOPY);pDC-SelectObject(pOldBrush);bm.DeleteObject();56位圖操作(5)57位圖操作(6)BitBlt的例子CBitmap bm; bm.LoadBitmap(IDB_MYBITMAP);CDC MemDC;MemDC.CreateCompatibleDC(pDC);MemDC.SelectObject(&bm);BITMAP tmp; bm.GetBitmap(&tmp);pDC-BitBlt(0,0,tmp.bmWidth,tmp

32、.bmHeight, &MemDC,0,0,SRCCOPY);bm.DeleteObject();58位圖操作(7)StretchBlt的例子CBitmap bm; bm.LoadBitmap(IDB_MYBITMAP);CDC MemDC;MemDC.CreateCompatibleDC(pDC);MemDC.SelectObject(&bm);BITMAP tmp; bm.GetBitmap(&tmp);pDC-StretchBlt(0,0,tmp.bmWidth/2,tmp. bmHeight/2,&MemDC,0,0,tmp.bmWidth,tmp. bmHeight,SRCCOPY)

33、;bm.DeleteObject();59位圖操作(7)60圖標(biāo)操作(1)圖標(biāo)(Icon)是一種特殊的位圖,其與位圖的區(qū)別是固定大小CWinApp提供LoadStandardIcon(),用于加載系統(tǒng)預(yù)定義的圖標(biāo)CWinApp提供LoadIcon(),用于加載圖形編輯器創(chuàng)建的圖標(biāo)61圖標(biāo)操作(2)系統(tǒng)預(yù)定義的圖標(biāo) 預(yù)定義圖標(biāo)宏 說明 IDI_APPLICATION 默認(rèn)圖標(biāo) IDI_ASTERISK 信息圖標(biāo) IDI_EXCLAMATION 驚嘆號(hào)圖標(biāo) IDI_HAND 嚴(yán)重警告圖標(biāo) IDI_QUESTION 問號(hào)圖標(biāo)62圖標(biāo)操作(3)顯示圖標(biāo)的例子HICON hIcon;hIcon=AfxG

34、etApp()-LoadStandardIcon (IDI_QUESTION);/hIcon=AfxGetApp()-LoadIcon(IDI_MYICON);CRect rect;GetClientRect(&rect);pDC-DrawIcon(rect.right-GetSystemMetrics (SM_CXICON)/2,(rect.bottom-GetSystemMetrics(SM_CYICON)/2,hIcon);63圖標(biāo)操作(4)64光標(biāo)操作(1)光標(biāo)(Cursor)用于顯示鼠標(biāo)操作時(shí),鼠標(biāo)所在位置與顯示形狀CWinApp提供LoadStandardCursor(),用于加載

35、系統(tǒng)預(yù)定義的光標(biāo)CWinApp提供LoadCursor(),用于加載圖形編輯器創(chuàng)建的光標(biāo)SetCursor用于設(shè)置光標(biāo)形狀65光標(biāo)操作(2)系統(tǒng)預(yù)定義的光標(biāo)光標(biāo)類型 說明光標(biāo)類型 說明IDC_ARROW 箭頭 IDC_UPARROW 垂直箭頭IDC_CROSS 十字光標(biāo)IDC_SIZEALL 四向箭頭IDC_WAIT 沙漏光標(biāo)IDC_SIZENWSE 左上右下角雙箭頭IDC_IBEAM 輸入光標(biāo)IDC_SIZENESW 右上左下角雙箭頭IDC_SIZE 裝入方框IDC_SIZEWE 水平雙箭頭IDC_ICON 空肖像IDC_SIZENS 垂直雙箭頭66光標(biāo)操作(3)在CTestView:OnL

36、ButtonDown()中SetCapture(); HCURSOR hCursor; hCursor=AfxGetApp()-LoadStandardCursor (IDC_CROSS);/hCursor=AfxGetApp()-LoadCursor (IDC_MYCURSOR);SetCursor(hCursor);RECT rect; GetClientRect(&rect);ClientToScreen(&rect); ClipCursor(&rect);67光標(biāo)操作(4)在CTestView:OnLButtonUp()中ReleaseCapture();ClipCursor(NULL

37、);68鼠標(biāo)畫線的例子(1)在CTestView類定義中在CTestView構(gòu)造函數(shù)中private: int m_Draw; HCURSOR m_Cursor; CPoint m_Old, m_Origin;m_Draw=0;m_Cursor=AfxGetApp()-LoadStandardCursor (IDC_CROSS);69鼠標(biāo)畫線的例子(2)在CTestView:OnLButtonDown()中在CTestView:OnLButtonUp()中m_Old=point; m_Origin=point;SetCapture(); SetCursor(m_Cursor); m_Draw=

38、1;CRect rect; GetClientRect(&rect);ClientToScreen(&rect); ClipCursor(&rect);m_Draw=0;ReleaseCapture(); ClipCursor(NULL); 70鼠標(biāo)畫線的例子(3)在CTestView:OnMouseMove()中CClientDC dc(this);dc.SetROP2(R2_NOT);if(m_Draw=1) dc.MoveTo(m_Origin); dc.LineTo(m_Old); dc.MoveTo(m_Origin); dc.LineTo(point); m_Old=point;7

39、1鼠標(biāo)畫線的例子(4)72背景與貼圖的例子(1)在CTestView類定義中在CTestView構(gòu)造函數(shù)中private: CBitmap m_Back; CBitmap m_Bird0; CBitmap m_Bird1;m_Back.LoadBitmap(IDB_BACK);m_Bird0.LoadBitmap(IDB_BIRD0);m_Bird1.LoadBitmap(IDB_BIRD1);73背景與貼圖的例子(2)在CMainFrame:PreCreateWindow()中在CTestView:OnDraw()中CDC MemDC;MemDC.CreateCompatibleDC(pDC

40、);MemDC.SelectObject(&m_Back);pDC-BitBlt(0,0,534,432,&MemDC,0,0,SRCCOPY);cs.cx=534;cs.cy=432;cs.style&=WS_MAXIMIZEBOX;74背景與貼圖的例子(3)在CTestView:OnLButtonDown()中CDC *pDC=GetDC();CDC MemDC;MemDC.CreateCompatibleDC(pDC);MemDC.SelectObject(&m_Bird0);pDC-BitBlt(point.x,point.y,point.x+137, point.y+99,&MemDC,0,0,SRCAND);MemDC.SelectObject(&m_Bird1);pDC-BitBlt(point.x,point.y,point.x+137, point.y+99,&MemDC,0,0,SRCPAINT);ReleaseDC(pDC);75背景與貼圖的例子(4)76扇面效果的例子(1)在CTestView類中添加數(shù)據(jù)成員在CTestView構(gòu)造函數(shù)中初始化在C

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論