版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、Visualc2010第三講簡單圖形Visual c+2010第三講簡單圖形繪制主講 朱世華Visualc2010第三講簡單圖形一 畫線 1.1 基本知識MoveTo( ) 開始畫線、弧和多邊形時,把光標移動到一個初始位置 LineTo( ) 畫一條從初始位置到另一個點的直線 Arc( ) 畫一段弧 ArcTo( ) 畫一段弧,并更新初始位置 AngleArc( ) 畫一條線,然后畫一段弧,并更新初始位置 PolyDraw( ) 畫一系列線段和Bezier樣條 PolyLine( ) 畫一系列線段 PolyPolyLine( ) 畫多個系列線條 畫線屬性是通過畫筆的屬性來控制Visualc20
2、10第三講簡單圖形 1.2 實例CPen *oldpen,pen1,pen2,pen3; pen1.CreatePen(PS_SOLID,2,RGB(255,0,0);/畫筆1 LOGPEN logpen; logpen.lopnStyle = PS_DASH; logpen.lopnWidth.x = 1; logpen.lopnWidth.y = 1; logpen.lopnColor = RGB(199,199,199); pen2.CreatePenIndirect(&logpen);/畫筆2 pen3.CreatePen(PS_USERSTYLE| PS_ENDCAP_FLA
3、T,3,RGB(100,120,120);/畫筆3 Visualc2010第三講簡單圖形 oldpen = (CPen *)pDC-SelectObject(&pen1); pDC-MoveTo(100,100); /畫線 pDC-LineTo(200,200); pDC-SelectObject(&pen2); pDC-Arc(&CRect(200,200,400,400),CPoint(200,200), CPoint(200,400); /畫圓弧 pDC -SelectObject(&pen3); POINT pt4 = 10,10,15,15,20,40
4、,50,70; BYTE style4 = PT_MOVETO,PT_LINETO,PT_LINETO,PT_LINETO; pDC- PolyDraw(pt,style,4); /畫線 pDC-SelectObject(oldpen);Visualc2010第三講簡單圖形效果圖Visualc2010第三講簡單圖形二.繪制形狀繪制形狀FillRect( ) 填充一個矩形FillSolidRect( ) 用用一單色填充一個矩形InvertRect( ) 反轉(zhuǎn)一個矩形的顏色ExtFloodFill( ) 用用當前畫刷填充一個區(qū)域,提供比FloodFill( )成員函數(shù)更多的靈活性FrameRect
5、( ) 畫一個矩形的邊框填充屬性是使用的是畫筆, B r u s h對象控制怎樣填充形狀。設(shè)備環(huán)境用一個H B R U S H句柄指向一個畫刷對象。若用M F C創(chuàng)建一個B r u s h對象,首先要創(chuàng)建一個C B r u s h類對象.GetBrushOrg獲取當前畫刷的起點SetBrushOrg指定選入設(shè)備上下文的下一個畫刷的起點FillRgn( ) 填充一個區(qū)域InvertRgn( ) 反轉(zhuǎn)一個區(qū)域的顏色FrameRgn( ) 畫一個特定區(qū)域的邊框Visualc2010第三講簡單圖形實例二CBrush *oldbrush,brush1,brush2,brush3; brush1.Crea
6、teSolidBrush(RGB(100,100,100); brush2.CreateHatchBrush(HS_CROSS,RGB(200,200,200); LOGBRUSH logbrush; logbrush.lbStyle = BS_HOLLOW; /logbrush.lbColor = ; /logbrush.lbHash = ; brush3.CreateBrushIndirect(&logbrush); /Oldbrush = (CBrush*)pDC-SelectObeject(&brush1); pDC-FillRect(&CRect(0,0,10
7、0,100),&brush1); pDC - FillSolidRect(&CRect(100,100,200,200),RGB(20,20,20); pDC -InvertRect(&CRect (100,100,200,200); Visualc2010第三講簡單圖形實例二(續(xù)) oldbrush = (CBrush*)pDC-SelectObject(&brush1); pDC -Rectangle(&CRect(200, 200,250,250); pDC -SelectObject(&brush2); pDC -Rectangle(&a
8、mp;CRect(250, 250,300,300); pDC -DrawEdge(&CRect(300, 300,350,350), EDGE_ETCHED|BDR_SUNKENOUTER|BDR_RAISEDINNER, BF_RECT); pDC -Draw3dRect(&CRect(350, 350,400, 400),RGB(20,20,20),RGB(200,200,200); pDC -SelectObject(&brush3); pDC -DrawFocusRect(&CRect (400,400,450,450); pDC -DrawFrame
9、Control(&CRect(400,0,500,100), DFC_BUTTON, DFCS_ADJUSTRECT|DFCS_BUTTON3STATE|DFCS_MONO);pDC-SelectObject(oldbrush); Visualc2010第三講簡單圖形Visualc2010第三講簡單圖形繪制文本之一繪制文本之一TextOut( ) 在在一個指定的位置,輸出一個字符串ExtTextOut( ) 在在一個矩形區(qū)域里輸出一個字符串TabbedTextOut( ) 在基于用該函數(shù)傳輸?shù)囊粋€表,在指定位置輸出一個字符串,并將字符串中的任何制表符轉(zhuǎn)換為空格DrawText( ) 在
10、在指定的矩形域里繪制文本,但比TextOut( )有更多的選項,如把文本居中和顯示多行文本文本屬性控制怎樣繪制文本。有三種類型的文本屬性:顏色、對齊方式和字體文本顏色的顏色可以使用函數(shù)SetTextColor( ) 設(shè)定前景色(即文本色)SetBkColor( ) 設(shè)置輸出文本處的背景色。Visualc2010第三講簡單圖形繪制文本之二繪制文本之二文本的對其方式; 對齊方式屬性決定文本怎樣排列(如:左對齊、右對齊、中央對齊)。確切地說, TextOut( )函數(shù)中的x、y變量可以表示文本的左邊、右邊或者底部。使用默認的對齊方式, x、y代表文本的左上角,但還有其他一些方式。要改變設(shè)備環(huán)境的文本
11、對齊屬性,可以用SetTextAlign( )函數(shù)和下面的標志值之一:TA _ LEFT 兒TextOut( )中的x變量表示文本的左邊。TA _ L E F T是默認設(shè)置值TA _ TOP 兒TextOut( )中的y變量表示文本的頂部。TA _ TO P是默認設(shè)置值TA _ RIGHT 兒TextOut( )中的y變量表示文本的右邊。計算文本的邊界矩形,用以決定從哪兒開始繪制文本TA _ CENTER 兒TextOut( )中的y變量表示文本的中部TA _ BASELINE 兒TextOut( ) 中的y變量表示文本的基線TA _ BOTTOM 兒TextOut( )中的y變量指示文本的底
12、部virtual int DrawText(LPCTSTR lpszString,ini nCount ,LPRECTlpRect,UINT nForm-at);int DrawText(const Cstring&str,LPRECT lpRect,UNIT nFormat);/ 如果成功,則返回文本高度。Visualc2010第三講簡單圖形繪制文本之三繪制文本之三lpszString指向要繪制的文本的指針。如果nCount是-1,該字符串必須是空終止的。NCount字符串中字符數(shù)目。如果為-1,lpszString被認為是一個指向空終止的字符串的長指針。DrawText自動計算字符
13、數(shù)目。LpRect指向RECT結(jié)構(gòu)或Crect對象的指針,結(jié)構(gòu)(或?qū)ο螅┲邪芯匦危ㄟ壿媶挝槐硎荆?,其中的文本帶有格式。NFormat指定格式化文本的方法。它可以是下列值的組合(可用運算符或位操作符進行組合): DT_BOTTOM 底部對齊的文本。該值必須同DT_SINGLELINE組合使用。DT_CALCRECT 決定矩形的寬度和高度,如果是多行文字,DrawText將會使用lpRect指向的矩形,并擴展矩形以容納文本。如果是單行文本,DrawText將會調(diào)整矩形的右邊以便容納該行文字。兩種情況下,DrawText都返回格式化文本的高度,但并不繪制它們。Visualc2010第三講簡單圖形
14、繪制文本之三繪制文本之三 DT_CENTER 將文本水平居中。 DT_END_ELLIPSIS或DT_PATH _ELLIPSIS 如果必要,將用橢圓替代部分指定的文本,以便適合給定的矩形。除非指定DT_MODIFYSTRING 標志,否則給定的字符串不會被修改??梢灾付―T_END_ELLIPSIS在字符串末端替代字符,或者指定DT_PATH_ELLIPSIS在字符串中間替代字符。如果字符串中含有反斜杠(),DT_PATH_ELLIPSIS將盡可能保存在最后一個反斜杠后的文本。 DT_EXPANDTABS 擴展制表符,每一制表符所含字符的缺省數(shù)目是8。 DT_EXTERNALLEADING包
15、括在行高中的字體外部間隔。通常外部間隔不包括在一行文本的高度之中。 DT_LEFT 文本左對齊。Visualc2010第三講簡單圖形繪制文本之四繪制文本之四 lDT_MODIFYSTRING 修正給定字符串以便與顯示文本匹配。只有在指定DT_END_ELLIPSIS 或DT_ PATH_ELLIPSIS 標志時,該標志才起作用。 DT_NOCLIP 繪制但不剪切, DrawText 在使用DT_NOCLIP后總能運行得快一些。 DT_NOPREFIX 關(guān)閉前綴字符,通常DrawText 將助記前綴&理解為其后字符加上下劃線,&前綴符表示顯示一個&字符,指定 DT_NOP
16、REFIX后,也關(guān)閉了這種處理。l DT_PATH_ELLIPSISl DT_RIGHT 文本右對齊。 DT_SINGLELING 指定單行,回車與換行不會中斷該行。 DT_TABSTOP 設(shè)置制表位,nFormat的高位字節(jié)即為每一制表符所含字符的數(shù)目,缺省值為8。Visualc2010第三講簡單圖形繪制文本之五繪制文本之五 DT_TOP 文本靠上對齊(只用于單行文字)。 DT_VCENTER 垂直居中對齊(只用于單行文字)。 DT_WORDBREAK 設(shè)定單詞中斷。如果超過lpRect指定的矩形邊界,行會自動在詞間斷開,回車與換行也會斷行。 注意 DT_CALCRECT,DT_EXTERN
17、ALLEADING,DT_INTERNAL,DT_NOCLIP和DT_NOPREFIX不能與DT_TABSTOP一同使用。Visualc2010第三講簡單圖形實例三 CString str =_T( 11111111111111111111111“); CRect rect; rect.top = 200; rect.left = 200; rect.bottom = 250; rect.right = 250; pDC-DrawText(str,&rect,DT_LEFT|DT_END_ELLIPSIS)/多出的字符用顯示Visualc2010第三講簡單圖形Visualc2010第三
18、講簡單圖形實例四 CRect Rect; GetWindowRect(&Rect); CFont MyFont; MyFont.CreateFont(24,0,0,0,FW_BOLD,true,FALSE,0,0,0,0,0,0,_T(Arial“); CString StrInfo=_T(創(chuàng)建立體效果的字符串“); pDC-SetBkMode(TRANSPARENT); CFont *pOldFont=pDC-SelectObject(&MyFont); COLORREF OldColor=pDC-SetTextColor(:GetSysColor(COLOR_3DHILIG
19、HT);Visualc2010第三講簡單圖形實例四續(xù) Rect.right=Rect.Width(); Rect.bottom=Rect.Height(); Rect.left=Rect.top=0; pDC-FillSolidRect(Rect,:GetSysColor(COLOR_3DFACE); pDC-DrawText(StrInfo,Rect+CPoint(0,1),DT_SINGLELINE|DT_LEFT); pDC-SetTextColor(:GetSysColor(COLOR_3DSHADOW); pDC-DrawText(StrInfo,Rect,DT_SINGLELINE
20、|DT_LEFT); pDC-SetTextColor(OldColor); pDC-SelectObject(pOldFont);Visualc2010第三講簡單圖形Visualc2010第三講簡單圖形實例五 CFont MyFont; /聲明邏輯字體變量MyFontCFont* pOldFont;CRect rect; /定義矩形變量rect,保存客戶區(qū)域CString caption=_T(TextOut()函數(shù)輸出的透明庫存字體OEM_FIXED_FONT!);pDC-SelectStockObject(OEM_FIXED_FONT); /選擇庫存字體GetClientRect(rec
21、t);/取得客戶區(qū)的區(qū)域保存到rect中Visualc2010第三講簡單圖形pDC-SetTextAlign(TA_BASELINE);/設(shè)置文本的對齊方式為將點與所選字體的基線對齊pDC-SetBkMode(TRANSPARENT);/設(shè)置背景模式不透明pDC-SetTextColor(RGB(255,0,0);/設(shè)置文本顏色為紅色pDC-SetBkColor(RGB(0,0,255);/設(shè)置文本背景顏色為藍色pDC-TextOut(rect.right/6,rect.bottom/6,caption);/輸出文本Visualc2010第三講簡單圖形MyFont.CreatePointFon
22、t(140, _T(Arial); /由CreatePointFont函數(shù)直接創(chuàng)建一種邏輯字體 pOldFont = pDC-SelectObject(&MyFont); /將新建的字體MyFont選入設(shè)備環(huán)境pDC-SetTextColor(:GetSysColor(COLOR_WINDOWTEXT);/將字體顏色設(shè)置為Windows系統(tǒng)的文本顏色int currentX=rect.right/6 ,currentY=rect.bottom*4/6;Visualc2010第三講簡單圖形CString caption1=_T(用CreatePointFont創(chuàng)建、ExtTextOut輸
23、出的不透明的Arial字!);pDC-ExtTextOutW(currentX,currentY,ETO_OPAQUE, CRect(currentX,currentY-30,currentX+300,currentY+30), caption1,caption1.GetAllocLength(),NULL);/在指定的矩形內(nèi)不透明顯示文本 pDC-SelectObject(pOldFont);/恢復(fù)系統(tǒng)先前的字體Visualc2010第三講簡單圖形Visualc2010第三講簡單圖形繪制位圖和圖標繪制位圖和圖標 DrawIcon 在在指定的位置畫一個圖標 BitBlt 在 從指定的設(shè)備環(huán)境中
24、拷貝一個位圖,通常是從磁盤中裝入或在內(nèi)存中創(chuàng)建,如前面所述 StretchBlt 在 與BitBlt( )基本相同,但它試圖伸展或壓縮一個位圖以適應(yīng)目標 PlgBlt 從源設(shè)備上下文的指定矩形到給定設(shè)備上下文中指定平行多邊形,執(zhí)行顏色數(shù)據(jù)位的位塊傳遞 FloodFill 用當前畫刷填充區(qū)域 ExtFloodFill 用當前畫刷填充區(qū)域。比FloodFill成員函數(shù)提供更多靈活性MaskBlt使用給定屏蔽和光柵操作對源和目標位圖合并顏色數(shù)據(jù)Visualc2010第三講簡單圖形繪制位圖和圖標繪制位圖和圖標PatBlt 創(chuàng)建位特征MaskBlt 使用給定屏蔽和光柵操作對源和目標位圖合并顏色數(shù)據(jù)實例1
25、:HICON hicon = AfxGetApp()-LoadStandardIcon(MAKEINTRESOURCE(IDI_QUESTION);pDC-DrawIcon(0,0,hicon);BOOL BitBlt(int x,int y, int nWidth, int nHeight, CDC* pSrcDC, int xSrc, intySrc, DWORD dwRop);x指定目標矩形左上角的邏輯X坐標。Y指定目標矩形左上角的邏輯Y坐標。NWidth指定目標矩形和源位圖的寬度(邏輯單位)。NHeight指定目標矩形和源位圖的高度(邏輯單位)。PSrcDC指向CDC對象的指針,標識待
26、拷貝位圖的設(shè)備上下文。如果dwRop指定不包括源的光柵操作,則它必須為NULL。XSrc指定源位圖左上角的邏輯X坐標。YSrc指定源位圖左上角的邏輯Y坐標。Visualc2010第三講簡單圖形繪制位圖和圖標繪制位圖和圖標 DwRop指定要執(zhí)行的光柵操作。光柵操作代碼定義GDC如何合并輸出操作中的顏色,包括當前畫刷、可能的源位圖和目標位圖。下面對dwRop列出光柵操作代碼及其描述: BLACKNESS 所有輸出變黑。 DSTINVERT 反轉(zhuǎn)目標位圖。 MERGECOPY 使用布爾AND操作符合并特征與源位圖。 MERGEPAINT 使用布爾OR操作符合并特征與源位圖。 NOTSRCCOPY 拷
27、貝反轉(zhuǎn)源位圖到目標。Visualc2010第三講簡單圖形繪制位圖和圖標繪制位圖和圖標 NOTSRCERASE 反轉(zhuǎn)使用布爾OR操作符合并源和目標位圖的結(jié)果。 PATCOPY 拷貝特征到目標位圖。 PATINVERT 使用布爾XOR操作符合并目標位圖和特征。 PATPAINT 使用布爾OR操作符合并反轉(zhuǎn)源位圖和特征。用布爾OR操作符合并這項操作結(jié)果與目標位圖。 SRCAND 使用布爾AND操作符合并目標像素和源位圖。 SRCCOPY 拷貝源位圖到目標位圖。 SRCERASE 反轉(zhuǎn)目標位圖并用布爾AND操作符合并這個結(jié)果和源位圖。Visualc2010第三講簡單圖形繪制位圖和圖標繪制位圖和圖標 S
28、RCINVERT 使用布爾XOR操作符合并目標像素和源位圖。 SRCPAINT 使用布爾OR操作符合并目標像素和源位圖。WHITENESS 所有輸出變白。CDC *memDC = new CDC;memDC-CreateCompatibleDC(pDC);CBitmap bitmap;bitmap.CreateCompatibleBitmap(pDC,20,20);memDC-SelectObject(&bitmap);pDC-BitBlt(0,0,20,20,memDC,0,0,SRCCOPY);delete memDC; BOOL PlgBlt(POINT lpPoint ,CDC
29、* pSrcDC,int xSrc ,int ySrc , intnWidth ,int nHeight, CBitmap& maskBitmap,int xMask ,int yMask);lpPoint邏輯空間中包含三個點的數(shù)組的指針。它指定了一個目標平行四邊形的三個頂點。源矩形的左上角與數(shù)組中的第一個點映射,右上角與第二個點映射,第三個點指向左下角。源矩形的右下角與平行四邊形未能明確表示的第四點映射。Visualc2010第三講簡單圖形繪制位圖和圖標繪制位圖和圖標 pSrcDC源設(shè)備上下文的標識。xSrc用邏輯單位表示的源矩形左上角的X坐標。 ySrc用邏輯單位表示的源矩形左上角的Y坐標。nWidth用邏輯單位表示的源矩形的寬度。nHeight用邏輯單位表示的源矩形的高度。maskBitmap標識用以屏蔽源矩形顏色的可選的黑白位圖。xMask黑白位圖左上角的X坐標。yMask黑白位圖左上角的Y坐標。 Visualc2010第三講簡單圖形繪制位圖和圖標繪制位圖和圖標對源設(shè)備上下文指定的矩形到給定設(shè)備上下文中平行四邊形的顏色數(shù)據(jù)實行位塊(bit-block)轉(zhuǎn)換。如果位掩碼的句柄代表一個有效的位圖,函數(shù)利用該函數(shù)對源矩形的顏色數(shù)據(jù)位進行屏蔽。平行四邊形的第四個頂點(D)是將前三個
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年份房產(chǎn)分配及子女婚嫁資金管理合同3篇
- 山東省威海市文登區(qū)八校聯(lián)考2025屆中考生物考試模擬沖刺卷含解析
- 二零二五年度環(huán)保建筑材料集中采購及結(jié)算服務(wù)合同3篇
- 2025年會員服務(wù)合同終止協(xié)議書
- 課程設(shè)計模板示例
- 2025年度抗沉降路牙施工勞務(wù)分包合同4篇
- 鍋爐課程設(shè)計簡要步驟
- 二零二五年度車間生產(chǎn)設(shè)備維護與升級承包協(xié)議2篇
- 酸辣椒制作課程設(shè)計
- 2025年度廠房設(shè)備租賃與綜合管理服務(wù)合同4篇
- 2024年智能科技項目開發(fā)戰(zhàn)略合作框架協(xié)議
- 精神科健康宣教手冊-各種精神疾病宣教
- 人才交流中心聘用合同模板
- 騰訊云人工智能工程師認證考試題(附答案)
- 2024版新能源汽車充電樁建設(shè)與運營合作框架協(xié)議3篇
- 掛靠免責(zé)協(xié)議書范本
- 廣東省廣州市天河區(qū)2023-2024學(xué)年高一上學(xué)期期末考試數(shù)學(xué)試卷(解析版)
- 鋼構(gòu)樓板合同范例
- 四年級全一冊《勞動與技術(shù)》第四單元 活動4《飼養(yǎng)動物的學(xué)問》課件
- 2024-2025學(xué)年人教版(2024)信息技術(shù)四年級上冊 第11課 嘀嘀嗒嗒的秘密 說課稿
- 2024中考物理真題匯編:電與磁(含解析)
評論
0/150
提交評論