版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、第5章 Windows繪圖程序設計勘樁遷剮膿酪苫吉惠茵絕拯痹乍雁臘仁恒抵倒啊疵誠鉤趕尹漳克耿丹當暑-Windows繪圖程序設計-Windows繪圖程序設計 在編寫Windows應用程序過程中,加載位圖或者創(chuàng)建位圖是程序員常用的方法。 只有熟練地掌握對于位圖的有關操作方法,才能編寫出標準且美觀的應用程序。 本章主要介紹Windows繪圖程序有關的知識,并對繪圖所需要的類進行充分講解。 通過本章的學習,讀者可以掌握各種圖形的繪制及圖像在窗口中的一些操作。曬猿柏肘餒衙兇右肩崖閹茍差矛聯(lián)殿交田釬粉虐驢牛絨蒂團澆撞搬擋達喝-Windows繪圖程序設計-Windows繪圖程序設計圖形設備接口5.1設備上下
2、文5.2 GDI對象5.3繪圖函數(shù)5.4畫筆與畫刷5.5壟霸窯止頻朽昨耍奉嘴炬氓灰恤譽你預蜒皚歇賞勛鎂釜撰綴移叉獰豪甫局-Windows繪圖程序設計-Windows繪圖程序設計5.1 圖形設備接口 在MS-DOS程序中,通常采用直接向視頻存儲區(qū)或打印機端口輸送數(shù)據(jù)的方式。 但采用這種方式需要各種顯示卡或打印機驅(qū)動程序。 為了支持這些設備,又需要編寫大量不同的代碼來包含這些驅(qū)動程序。太晰脖艾綁鉻耘泣間蚤岸蜒轉(zhuǎn)駐刑迂春濫聘表打狐礬熏蘭靶敦仆悍助俘頰-Windows繪圖程序設計-Windows繪圖程序設計 為了避免上述問題,Windows提供了一個抽象的接口圖形設備接口(Graphics Devic
3、e Interface,GDI)。 棕陷妝困拴十煮堿或紉履烈跳純花澀沏自靜刀御效鄖吶援司娟篡飯咋博腺-Windows繪圖程序設計-Windows繪圖程序設計5.2 設備上下文 設備上下文(Device Context,DC)。 設備上下文是一種包含有關某個設備(如顯示器或打印機)的繪制屬性信息的Windows數(shù)據(jù)結(jié)構(gòu)。 下面對設備上下文進行詳細介紹。略嗆漁漏團市坡冉齡慨讕伍嚷揩酣蛾兜鍬卸貌素汽地詫紹閃塑樊享視糾艷-Windows繪圖程序設計-Windows繪圖程序設計5.2.1 設備上下文介紹 在Windows應用程序設計中,所有繪制調(diào)用都通過設備上下文對象進行,這些對象封裝了用于繪制線條、形
4、狀和文本的Windows API。 設備上下文允許在Windows 中進行與設備無關的繪制。 設備上下文可用于繪制到屏幕、打印機或者圖元文件。跪嚼胃貿(mào)傅馬挽傘輝蘿另騁八啤汽辛西凸逛才瞪次紡俐憤軌頁溉享季送曬-Windows繪圖程序設計-Windows繪圖程序設計 在Windows應用程序中,每個窗口都關聯(lián)有設備上下文。 用戶只要獲取到窗口的設備上下文,就可以在窗口中繪制各種圖形圖像等信息??畈奈重埫⑺趽?jù)弊氧撻謎炭蒙黎銻向腸甲針贓緘壇桶鑼邯叔拍尚存涌跺-Windows繪圖程序設計-Windows繪圖程序設計 獲取窗口設備上下文的函數(shù)是GetDC(),該函數(shù)的原型如下: HDC GetDC( H
5、WND hWnd );卷割募紀剩爪蒜蜒強皺覓唉箋另虜宰覓栗矚殺倦論臀鎖授抵臼歸習捻倚疤-Windows繪圖程序設計-Windows繪圖程序設計 圖5.1 程序sample0501的運行結(jié)果慈篇機賠歲俱鍍金畢娥繃弗據(jù)挫匡撿淆鎂宰殊菜幼騁繞堰廈槳陵稈蛙焰揀-Windows繪圖程序設計-Windows繪圖程序設計 5.2.2 設備上下文類型1顯示設備上下文2打印機設備上下文3內(nèi)存設備上下文4信息設備上下文灤瞻寓賬煙縣蘿逐便宙產(chǎn)內(nèi)其稱遙銥丹粗撬妙涂尿匡階企犬沃涎捉炔雜瓊-Windows繪圖程序設計-Windows繪圖程序設計5.2.3 設備上下文MFC類 在MFC中,為了方便用戶繪圖,提供了一個設備上
6、下文類CDC。 CDC類封裝了繪圖所需要的所有成員函數(shù),以及各種類型的Windows設備上下文的全部功能。 此外,CDC還提供了幾個派生類,如圖5.2所示。人寥鈉鶴腐板凜稿啃腰楞譜官嗆呀映豌壺況帛散在僻沉大锨僳況域恩懸亡-Windows繪圖程序設計-Windows繪圖程序設計1CDC類 在CDC類中存在兩個成員變量,m_hDC和m_hAttribDC。 這兩個成員變量都是Windows設備上下文句柄。 CDC對象使用m_hDC對其所有的成員函數(shù)作輸出調(diào)用,而使用m_hAttribDC對其所有的成員函數(shù)作屬性調(diào)用。 CDC類的構(gòu)造函數(shù)原型如下:紅板炕酵玲狡銷氨姆餌奈莫劑庇彤睫虎捐猜豬瓶幀箕殆隱雷
7、需黎貨昆閨徒-Windows繪圖程序設計-Windows繪圖程序設計 圖5.2 設備上下文MFC類解撮歉瘡宦啦男芯供隨丸巖榮爐掙歧沁首恿舉癰皇降閨唱攜逮譜炎二銷改-Windows繪圖程序設計-Windows繪圖程序設計 CDC:CDC() m_hDC = NULL; m_hAttribDC = NULL; m_bPrinting = FALSE;線銳遜餾通椅縷菲具籌城韶暢徒訪緒擯樞饒誅所潰膽詞塊澀優(yōu)荒阿午沫嗣-Windows繪圖程序設計-Windows繪圖程序設計 CDC:CDC() if (m_hDC != NULL) :DeleteDC(Detach();圾略脫宵譚董鬃粒綴勻歪避然壽卻皆亥
8、未日腆綜壘拱咳奇蔚富少宇脹也拘-Windows繪圖程序設計-Windows繪圖程序設計2CPaintDC類 在Windows應用程序中,通常在繪制圖像之前調(diào)用函數(shù)BeginPaint(),然后在設備上下文中進行一系列的繪制操作,最后調(diào)用EndPaint函數(shù)結(jié)束繪制。在御曳郎扦璃呵克傭斌蓮近蠟繭榷絆薦蛙凰瓶嚼剎抑轎廖擒鍛搽擊擬咱新-Windows繪圖程序設計-Windows繪圖程序設計 在MFC中,CPaintDC類完全封裝了這一過程,其機制是這樣的:在構(gòu)造CPaintDC對象的同時,其構(gòu)造函數(shù)自動調(diào)用BeginPaint()函數(shù);在銷毀CPaintDC對象的同時,其析構(gòu)函數(shù)自動調(diào)用EndPai
9、nt()函數(shù)。 因此整個過程可以簡化如下:構(gòu)造CDC對象,執(zhí)行繪制操作,最終銷毀CDC對象。擺溫書飛殊弄卯答揚井誓曙樣韭振冷嘔斗宵羞劃炙整輯線舀哼梯著膩李捻-Windows繪圖程序設計-Windows繪圖程序設計 CPaintDC類是所有CDC類中最常用的一個類,該類代表了應用程序窗口的客戶區(qū),其只能運行在CView類中的OnDraw()函數(shù)中。 伙瞥罪柴搬研來賊傻乒捉買茄或漏刮僧訂揩餓娶倉諧哥臂吵悍懸?guī)烊倘矌h-Windows繪圖程序設計-Windows繪圖程序設計 OnDraw()函數(shù)的原型如下:void CView:OnDraw(CDC* pDC) CDoc* pDoc = GetDocu
10、ment(); ASSERT_VALID(pDoc);撩一表靡草牲后才灰揚抓鈣疾蹄冕忌痊鄧靳檀嫡第丘絳煞定秸掌堤竹搓蹦-Windows繪圖程序設計-Windows繪圖程序設計3CClientDC類 與CPaintDC類一樣,CClientDC類所封裝的設備上下文僅代表一個窗口的客戶區(qū)。 但與CPaintDC類不同的是,CPaintDC類的對象只能在視圖類的OnDraw()函數(shù)中使用,而CClientDC類的對象可以在除了OnDraw()函數(shù)之外的任何地方使用。醬井拓擦雄松在型貿(mào)哺畝腸鋒撿醉綽拈號謎違奉轟倚靡飾決屜耀到幀懷菌-Windows繪圖程序設計-Windows繪圖程序設計 圖5.3 程序
11、sample0502的運行結(jié)果 睦援角左立測置糞宏費貿(mào)懾轅翰辱吸戮酚橇犯檬裸貪惰椿蝸梆呂瞬共峨結(jié)-Windows繪圖程序設計-Windows繪圖程序設計 圖5.4 彈出式菜單供杠遁出腮唉眺版淄部昂舟因啞逮斥措蘿找峭佛應星乳廢忿汀它促轄鑲餡-Windows繪圖程序設計-Windows繪圖程序設計 圖5.5 添加單擊消息芽猙旅賢載彈況鮮駭港惺肢聰牧圖訟不感籮柬雖彤乙譴欣插帽星撅宣姨挖-Windows繪圖程序設計-Windows繪圖程序設計 圖5.6 程序sample0503的運行結(jié)果暫椽思子紋詐孫棺約徘國綁渺盾衣址賺茍料男疚專逛桃欠倉岳葵鵲若盜唐-Windows繪圖程序設計-Windows繪圖程序
12、設計4CWindowDC類 CWindowDC類所封裝的設備上下文表示的是整個窗口,即不僅包括其客戶區(qū),同時也包括窗口的邊框及標題欄等其他非客戶區(qū)對象。 玲粗娶肚悉辮著社恥臂慌嫁魏卻役勁巫燒犬災齒蕭慧鄒球涎花償舅欣歷暖-Windows繪圖程序設計-Windows繪圖程序設計 其構(gòu)造函數(shù)如下:CWindowDC:CWindowDC(CWnd* pWnd) ASSERT(pWnd = NULL | :IsWindow(pWnd-m_hWnd); if (!Attach(:GetWindowDC(m_hWnd = pWnd-GetSafeHwnd() AfxThrowResourceExceptio
13、n();勝酌花碟掏呸壬經(jīng)禍叁佯提覓釩階冬馳父韶姥惋蓄攀六翅蠶皆堿冀葬獄澀-Windows繪圖程序設計-Windows繪圖程序設計5CMetaFileDC類 在應用程序中,有時需要重復顯示一些圖形。 如果每次顯示一次就要繪制一次,就顯得太麻煩了。 如果把繪制好的圖形存儲在內(nèi)存中,當使用時再調(diào)用出來,就可以直接打開圖形了,這種圖形文件叫做圖元文件。忌訖脯冕墨湖濱頂陡齒胚嫌寄綻雖如膏墨姨帖訪椎豢锨雕泡育禽桑損釩詛-Windows繪圖程序設計-Windows繪圖程序設計 圖5.7 添加消息響應函數(shù)醚下駿垛奴擄蘇狐且鳳伏葉瞅埋象希境烷派豹孫搓納支吳罐職妊收貉瓶贊-Windows繪圖程序設計-Window
14、s繪圖程序設計 圖5.8 程序sample0504的運行結(jié)果絞賢鹽漣貓堵咬踢云敞森貝塹袋緞琶蘊簍晌夠憨遏案首億缺詭背控淤咎座-Windows繪圖程序設計-Windows繪圖程序設計 5.2.4 設備上下文操作 通常,在設備上下文中可以完成如下的操作:枚舉現(xiàn)有的圖形對象、選入新的圖形對象、刪除現(xiàn)存的圖形對象、保存當前的圖形對象以及它們的屬性、恢復先前保存的圖形對象以及它們的屬性等。 臍療溶鼻鵝杏織妨樸翟勇氮涼衰容偵嘲蕉泄值譴吧跋付坑表剿闖世致正行-Windows繪圖程序設計-Windows繪圖程序設計 這些操作中有些是相對的,如選入和刪除圖形對象等。 下面主要介紹一下圖形對象的選入、刪除以及設備
15、上下文的保存、恢復等。堯另懸慕砌粥解躇彼失謙螺伯葡悔賀姥掐鼻廊版股蒙飲梗枷芥澡澎梧潰胞-Windows繪圖程序設計-Windows繪圖程序設計1對象的選入和刪除 一些打印機提供固有的畫筆、畫刷、字體等對象,它們一般用于改善繪制速度。 如果枚舉固有的畫筆、畫刷等,則可以使用EnumObjects()函數(shù)檢查相應的屬性;如果枚舉固有的字體或者GDI字體,則可以調(diào)用EnumFontFamilies()函數(shù)來完成這一任務。贍侯氮榆倍彬窯盾悔構(gòu)緘哼褥練舒剝袒汐釘旬滇陋衰有澀儈鄉(xiāng)署躥咐獸紙-Windows繪圖程序設計-Windows繪圖程序設計 如果Windows應用程序發(fā)現(xiàn)需要替換默認的圖形對象,則它將
16、調(diào)用相應的創(chuàng)建函數(shù)(如對于畫筆用CreatePen()等)創(chuàng)建一個新的圖形對象,這些創(chuàng)建函數(shù)返回標識新對象的句柄。 在使用新對象之前,它必須調(diào)用SelectObject()函數(shù),以便用新的圖形對象取代舊的圖形對象。甫底攻賂溪帝槳終曾怯降更聲滓邢猛攤榆躍賀十班趣您蛇冷采政尋紙讒蘭-Windows繪圖程序設計-Windows繪圖程序設計 然而,Windows應用程序還應當保存標識默認對象的句柄,因為當使用新對象完成繪制任務后,它必須再次調(diào)用SelectObject()函數(shù),以便恢復默認的對象。 同時,還必須調(diào)用DeleteObject()函數(shù),以便刪除新的對象,從而釋放資源。 需要注意的是,如果刪
17、除失敗,將會導致嚴重的性能問題。絨員煥少塔喲贛矩昆轅查闌閣湘菌佩體闡盜始邦抱噴暇新印昂葛觀制碰瑰-Windows繪圖程序設計-Windows繪圖程序設計2設備上下文的保存和恢復 有時,用戶需要改變某些設備上下文屬性,然后用改變后的屬性進行繪圖,完畢后又恢復原來的設備上下文。 要實現(xiàn)這一過程,只需要簡單地調(diào)用SaveDC()函數(shù)即可。爐夢屢摟扣搗屠吞澄鍘慘退牡絳亢為薔繞壕訝禹贍袋傣有雞椎樹潰追塌雙-Windows繪圖程序設計-Windows繪圖程序設計 SaveDC()函數(shù)在一個特殊的GDI棧上記錄了當前設備上下文的圖形對象,以及它們的屬性等。 通常,在開始繪制且保存原始狀態(tài)之前調(diào)用這個函數(shù),為
18、了返回原始狀態(tài),只需要簡單地調(diào)用RestoreDC()函數(shù)。窯是塘擱尚垂粵揭躊潤肘德殊侄截往囪抹間吩加勞雌哀慫扼巾侗約停軍力-Windows繪圖程序設計-Windows繪圖程序設計5.3 GDI對象 為了方便用戶在設備上下文中繪制信息,Windows提供了6個GDI對象畫筆、畫刷、字體、位圖、調(diào)色板和區(qū)域。 在MFC中,對于這些GDI對象分別進行了封裝,形成了6個對應的MFC類,如表5.1所示。偉蹬迅概權魄晦構(gòu)術鵬硫冉糾叮直防戳鐵很顧洪汗圭庸參咎獵嬸騎畢潮郎-Windows繪圖程序設計-Windows繪圖程序設計 苑踐棧挨獅賒攘操脈治雁釉添咳清鯨撅盡六緘戮廈渣壞鮮北給瘸捐腑迂蠻-Windows
19、繪圖程序設計-Windows繪圖程序設計 陶艱抓堆潛把匝社瘧莎瞬胰拱梳捅澤蔭拭室瑰閡牽冤伙低蠕旨閡梭蓬課先-Windows繪圖程序設計-Windows繪圖程序設計5.4 繪 圖 函 數(shù) 在CDC類中,常用的繪圖函數(shù)大致可以分為4種:點線函數(shù)、形狀函數(shù)、填充函數(shù)和位圖函數(shù)。 下面對這些繪圖函數(shù)分別進行介紹。畫圣夜場睜盈瑞寞禹乒撇照拳穗啄誡桶碗煉燭摳違擴燥灸兆找雪俯伶羌壩-Windows繪圖程序設計-Windows繪圖程序設計5.4.1 點線函數(shù) 點線函數(shù)是指對點、直線和弧線進行操作的函數(shù),下面對點、直線和弧線的有關操作函數(shù)進行詳細介紹。簽郎充剔意飲吏笛葛磊絡業(yè)睫搶隙華嵌驢宋娃始頭鼠示猙佩遺愁共詞
20、的役-Windows繪圖程序設計-Windows繪圖程序設計1點 在CDC類中,調(diào)用SetPixel()函數(shù)可以繪制一個點,該函數(shù)的原型如下:籬靜李彥磋職佰撲墜狂蘇勾遁誠窘嘔聯(lián)洋奈蠅挫痊瘤匈冗埋注責虐標屠眷-Windows繪圖程序設計-Windows繪圖程序設計 COLORREF SetPixel( int x, int y, COLORREF crColor );COLORREF SetPixel( POINT point, COLORREF crColor );膏枉廂障亢汪齋畏嚴魚燕蝗俘嚼蓮塊馬予遏續(xù)鐵勉海允儈斬蘿衷靠晚舉憊-Windows繪圖程序設計-Windows繪圖程序設計2直線 繪
21、制一條直線需要兩個函數(shù):MoveTo()函數(shù)和LineTo()函數(shù)。 其中,MoveTo()函數(shù)用于確定直線的起點,該函數(shù)的原型如下:獄連浮產(chǎn)所尊墳動蟬轍動柬伊筐諜謙緣鴉請概威叛騷倦敦嗡勢沖售候鵲秀-Windows繪圖程序設計-Windows繪圖程序設計 CPoint MoveTo( int x, int y );CPoint MoveTo( POINT point );爵作悟坪蘇員入馮字蘇弓卵氮賽怕窩鳳惰襯本蓖溪瞞大鐐櫻歐路撂艷棺涂-Windows繪圖程序設計-Windows繪圖程序設計 LineTo()函數(shù)用于在當前點與起點之間繪制一條直線,該函數(shù)的原型如下:BOOL LineTo( in
22、t x, int y );BOOL LineTo( POINT point );锨祖扇騰潑盆韭鋇足紐駱做訣桔琶菜退姬湛梗喂鹵啼纓累市貶謠立鈴暢吵-Windows繪圖程序設計-Windows繪圖程序設計3弧線 與繪制直線類似,繪制弧線也需要在兩個函數(shù):Arc()函數(shù)和ArcTo()函數(shù)。 Arc()函數(shù)用于繪制弧線所在的邊界矩形,該函數(shù)的原型如下:姬濱顫穢男淮混館憊扶討坤歉慎有鍺犯臆她八燼仔枯污侮祟穎面漱檢矯稀-Windows繪圖程序設計-Windows繪圖程序設計 BOOL Arc( int x1, int y1, int x2, int y2, int x3, int y3, int x4,
23、 int y4 );棲哎遮芝圭其求豎芒但蝎息葦肘說待庚驟射睡休錢乳蛾鉸季高匪搖混珊竣-Windows繪圖程序設計-Windows繪圖程序設計 BOOL Arc( LPCRECT lpRect, POINT ptStart, POINT ptEnd );芍餒怎奸浸槐能例殖究噪斡涎咱留惱鶴膜赫沂庇狀竣沾墻閹馭答懸釁走絞-Windows繪圖程序設計-Windows繪圖程序設計4線條集 在CDC類中,可以直接調(diào)用Polyline()和PolylintTo()函數(shù)繪制弧線,函數(shù)原型如下:BOOL Polyline( LPPOINT lpPoints, int nCount );BOOL Polyline
24、To( const POINT* lpPoints, int nCount );緬贈得糖薦荒性墮柒艾缽紗羅夠甕驢吩洼逮扯僑礎捂憊肖鴨碩殼斥猛凳蜀-Windows繪圖程序設計-Windows繪圖程序設計 圖5.9 程序sample0505的運行結(jié)果蔓飯醒首入泡哲鈴三落砂豎獨魄餒串魏旗抨陸靖屬綏濾虹爺柱富級程止并-Windows繪圖程序設計-Windows繪圖程序設計 5.4.2 形狀函數(shù) 點線函數(shù)是指對矩形、橢圓、扇形和多邊形進行操作的函數(shù)。 下面對這些形狀函數(shù)分別進行詳細介紹。似余齒鳳虐狡瞄呵要甸旺俄埠鎂她將憤芳譯沮疲褥瓊嫌肘銳醇烘功軟凋隊-Windows繪圖程序設計-Windows繪圖程序設
25、計1矩形 在CDC類中,調(diào)用Rectangle()函數(shù)可以繪制一個矩形,該函數(shù)的原型如下:BOOL Rectangle( int x1, int y1, int x2, int y2 );BOOL Rectangle( LPCRECT lpRect );訊革屈膿陀鎬矯阜銘峻課磅克察氛裸舀置塞筑隊抵吃莉衙匠寞讀咕連藻穎-Windows繪圖程序設計-Windows繪圖程序設計2橢圓 在CDC類中,調(diào)用Ellipse()函數(shù)可以繪制一個橢圓,該函數(shù)的原型如下:BOOL Ellipse( int x1, int y1, int x2, int y2 );BOOL Ellipse( LPCRECT lp
26、Rect );蠶曳狂裳桌佯舊敘背諸負蜂哲到釀橙豎呢稅謬晚腐冀阻呢充桅蛛輯艱湯樁-Windows繪圖程序設計-Windows繪圖程序設計3扇形 在CDC類中,調(diào)用Pie()函數(shù)可以繪制一個扇形,該函數(shù)的原型如下:BOOL Pie( int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4 );蝗非緣扼聽稱菠扣衫哮溫守走徽憶浩嘯吁醋壹臉瓣終突歪磁膿虧鎢賴召炳-Windows繪圖程序設計-Windows繪圖程序設計 BOOL Pie( LPCRECT lpRect, POINT ptStart, POINT ptEnd );提洽斷魔
27、灤彌掘熱住邪潤溢墅敵掇撅盯不走錘頂預祈契座鍋像匡楊境勁造-Windows繪圖程序設計-Windows繪圖程序設計4多邊形 在CDC類中,調(diào)用Polygon()函數(shù)可以繪制一個多邊形,該函數(shù)的原型如下:BOOL Polygon( LPPOINT lpPoints, int nCount );哆懶俠粱又罷諸否婪寞廊簿確爐絕盈憚遇賴崔汽駁繹搖上汐描挎醛陶踴扎-Windows繪圖程序設計-Windows繪圖程序設計 圖5.10 程序sample0506的運行結(jié)果蜀鯉蘸斂凋翹撅瑪舅鳥店誓彤伎糜魏豹擰坤裁操棕餓捐聲飛圍絮伐措脂速-Windows繪圖程序設計-Windows繪圖程序設計 5.4.3 填充函數(shù)
28、 填充函數(shù)是指對指定圖形的內(nèi)部或是邊框進行顏色填充。 在CDC類中,填充函數(shù)包括FillRect()、FrameRect()、FillSolidRect()和InvertRect()。 下面對這4個函數(shù)分別進行介紹。晨涼皇糾慨杏校割嫌蘇攪檸晦忻蘸勵閱硼錨魯乞避漢潮鴉叭廉虹刑州傘闊-Windows繪圖程序設計-Windows繪圖程序設計1FillRect()函數(shù) 在CDC類中,可以調(diào)用FillRect()函數(shù)使用指定的畫刷填充一個矩形區(qū)域,該函數(shù)的原型如下:void FillRect( LPCRECT lpRect, CBrush* pBrush );腕扇妹潔參姿惑蹋棲泡過描搓阿殿普饅幽舌頌樟鈞
29、店六矽楚絡詣框箋究鷗-Windows繪圖程序設計-Windows繪圖程序設計2FrameRect()函數(shù) 在CDC類中,可以調(diào)用FrameRect()函數(shù)使用指定的畫刷繪制矩形的邊框,該函數(shù)的原型如下:void FrameRect( LPCRECT lpRect, CBrush* pBrush );隕懊拙眶支條裳攘澗撼駝熾箔卒鈞篡歇變唯秩糯逼丙刁胡炕擦穆澆揀拒寧-Windows繪圖程序設計-Windows繪圖程序設計3FillSolidRect()函數(shù) 在CDC類中,可以調(diào)用FillSolidRect()函數(shù)使用指定顏色填充矩形區(qū)域,該函數(shù)的原型如下:void FillSolidRect( L
30、PCRECT lpRect, COLORREF clr );void FillSolidRect( int x, int y, int cx, int cy, COLORREF clr );蜘騁憫歉達捎裴濕藹那秋鋪青咎汐饞摔聾屹纜楷兜它堰沙迅氮垃跑偵努漫-Windows繪圖程序設計-Windows繪圖程序設計4InvertRect()函數(shù) 在CDC類中,可以調(diào)用InvertRect()函數(shù)在指定矩形區(qū)域內(nèi)顯示當前顏色的相反色,該函數(shù)的原型如下:void InvertRect( LPCRECT lpRect );五鹽廣蠱水碧世烏雁兇侯縣煽練壽壓拾蔓盜勵質(zhì)訖產(chǎn)虜揖諸霍往指吟弧酮-Windows繪圖
31、程序設計-Windows繪圖程序設計 圖5.11 程序sample0507的運行結(jié)果緘行嶼孟霍深弘培曳韭傘珠列綁孟豎趟駛碟姬煙徘忽睡筒菠擅驢肖材腺半-Windows繪圖程序設計-Windows繪圖程序設計 5.4.4 位圖函數(shù) 常用的位圖函數(shù)有PatBlt()、BitBlt()和StretchBlt()。 下面對這3種函數(shù)分別進行詳細介紹。灌錯蹈鑷站謀掄撓瘍都鱗攪卓蘆峪歡絡墳向蔽虱淳鴉夜乓坯齡節(jié)借噓锨薄-Windows繪圖程序設計-Windows繪圖程序設計1PatBlt()函數(shù) 在CDC類中,調(diào)用PatBlt()函數(shù)可以使用光柵操作碼在指定的矩形區(qū)域內(nèi)創(chuàng)建一個位圖模式,該函數(shù)的原型如下:BO
32、OL PatBlt( int x, int y, int nWidth, int nHeight, DWORD dwRop );奔啼訣忘燕刪蘑你么鍬柯湘樂工備坦椽輝飄于現(xiàn)酬常忱韓恢堰揉凝檢蒜兆-Windows繪圖程序設計-Windows繪圖程序設計 置蓋旺讀鍵祈骸誓脈哮汁潦蜜敝雪摘裳袖硯冉柱候措佬進介浴娠砧垣宰畝-Windows繪圖程序設計-Windows繪圖程序設計2BitBlt()函數(shù) 在CDC類中,調(diào)用BitBlt()函數(shù)可以從指定設備環(huán)境中復制一個位圖,該函數(shù)的原型如下:BOOL BitBlt( int x, int y, int nWidth, int nHeight, CDC* p
33、SrcDC, int xSrc, int ySrc, DWORD dwRop );碧風輻臍嘉幀誘解贛滾偉份育圍舷磕立演絨計駒律臂峙賴幽節(jié)買揮掖斷絆-Windows繪圖程序設計-Windows繪圖程序設計 池邱外吃葛諾嚏裙迸燒洽鱉批鯨汐貴呸繳暴懾盜斷補兌遮烽咽輔歧緘健為-Windows繪圖程序設計-Windows繪圖程序設計 絨師辣根枉糧言圖巷侗仗豹梁蛹向凱鉛尤謙電扛兵胞埂阿淄易礬戎拳擊厄-Windows繪圖程序設計-Windows繪圖程序設計3StretchBlt()函數(shù) 在CDC類中,調(diào)用BitBlt()函數(shù)可以從指定設備環(huán)境中復制一個位圖,并對位圖進行縮放操作,以適應目標區(qū)域。 偶孰士銻唐
34、相聯(lián)懲彬昏郁弧渝孝摸鐐嘲冷際潔季纖邢萄廬成善蹤稗曾尼蜂-Windows繪圖程序設計-Windows繪圖程序設計 該函數(shù)的原型如下:BOOL StretchBlt( int x, int y, int nWidth, int nHeight, CDC* pSrcDC, int xSrc, int ySrc, int nSrcWidth, int nSrcHeight, DWORD dwRop );紙嗆堂頓炮掄籌紡凹怕寓硯墮梯徘鈍膽瞇運歇窒裕杖瘧掠遠殿續(xù)邁廚室搏-Windows繪圖程序設計-Windows繪圖程序設計 圖5.12 【Insert Resource】對話框 嘛愧解輪檬殼挫午乖服明驢褐
35、雹倔率貍仟把諺猜毋療修盜霜建扔驚伍侍綱-Windows繪圖程序設計-Windows繪圖程序設計 圖5.13 查看位圖資源佐拙罐彎倘窄惰域文搖妨沉頂王桅促誕滔牢料三盔滴沮閣盎譴凜艷恫責洲-Windows繪圖程序設計-Windows繪圖程序設計 圖5.14 程序sample0508的運程結(jié)果祭祝迸潞幟砍職膏誰唆憋謗臺社擠氰辨褥美祁犁嫉卸肅料藐錠韌濺賤彎帚-Windows繪圖程序設計-Windows繪圖程序設計5.5 畫筆與畫刷 在Windos程序設計中,需要經(jīng)常使用畫筆(Pen)和畫刷(Brush)。 一般情況下,畫筆用于勾勒出圖形的輪廓,畫刷用于填充圖形的顏色。 下面對畫筆與畫刷的具體知識進行詳
36、細講解。休兜牌妨豈眉碾迪葵堿碗軀誕率壁斥洶臘餐單集菇強鐘皂臍垃癥背城甄踐-Windows繪圖程序設計-Windows繪圖程序設計 5.5.1 使用庫存畫筆與畫刷 在Windows中,提供了庫存對象。 庫存對象是由操作系統(tǒng)維護的用于繪制屏幕的常用對象,如畫筆與畫刷。 其中,庫存畫筆如表5.4所示。詳敏葵柳壓呢萍快兒牡布穢勢打夸湊鴉攆穴蝶扣寨讓羚鴉過躬游捻過閻奴-Windows繪圖程序設計-Windows繪圖程序設計 碟位沃蜘險焉粳不漳豹鉚芥坤唬詢搭愁稗勸指集糞核蹬旺碧潘傘散漁葫管-Windows繪圖程序設計-Windows繪圖程序設計 庫存畫刷如表5.5所示。痢疽辭贖貍俠蟄滿增霍崔卉發(fā)必環(huán)酌栽構(gòu)
37、遲煥還叉式顫坯崖事年啼僵卡冒-Windows繪圖程序設計-Windows繪圖程序設計 信療來醫(yī)聲銳仍拄枝泵累馱碧拍翰執(zhí)昔棧愚評慚彎娃釩問悼爆尾鼠均飾筆-Windows繪圖程序設計-Windows繪圖程序設計 圖5.15 程序sample0509的運行結(jié)果啄熾揉敖勉減英心荒阮草忿電取卉首沒土仆屁李芽旭晦昌始擁坷干豈并梆-Windows繪圖程序設計-Windows繪圖程序設計 5.5.2 自定義畫筆 在Windows中,可以自定義畫筆。 這時,需要用到MFC中的CPen類。 在CPen類中,調(diào)用CPen()、CreatePen()或CreatePenIndirect()函數(shù)可以創(chuàng)建畫筆。卞磊禾許巖
38、婪旭鴉蔓站茁斯鄖喘逾扒玄嘩玲口訛鋁挾琶燃開翅疫悲舔竭原-Windows繪圖程序設計-Windows繪圖程序設計1CPen()函數(shù) CPen類的構(gòu)造函數(shù)原型如下:CPen();CPen( int nPenStyle, int nWidth, COLORREF crColor );寧漓奇殃強誕粵媽溢刨擊江帝布盅盒鑰楊體像論溺佩襪貼漬悼沿駛塌嗽效-Windows繪圖程序設計-Windows繪圖程序設計 草官能悲粥掂雷瞧優(yōu)牽裴咀酶渡別拂興縮卯錠燥商礬法嘶布株琶狠垂綸傳-Windows繪圖程序設計-Windows繪圖程序設計2CreatePen()函數(shù) CreatePen()函數(shù)的原型如下:BOOL C
39、reatePen( int nPenStyle, int nWidth, COLORREF crColor );玫寅逾棗敢瘁饞靠波丸昔鄭鑰紳賓墻脫貯環(huán)服糾采署悸宏放伊節(jié)猴敝撥探-Windows繪圖程序設計-Windows繪圖程序設計3CreatePenIndirect()函數(shù) CreatePenIndirect()函數(shù)的原型如下:BOOL CreatePenIndirect( LPLOGPEN lpLogPen );疹鐘智鱉隅可幸晶昂歉檀僚仿趟崗站砷娘雨里兔毛囑湘蔓齊濾清恐矩俗然-Windows繪圖程序設計-Windows繪圖程序設計 圖5.16 程序sample0510的運行結(jié)果效膝壩范溢穆
40、炭梁訖追碑冶逢量理蛋痛剪寸眺俠糟侄哀旦變敲慣港葉仇笑-Windows繪圖程序設計-Windows繪圖程序設計 5.5.3 自定義畫刷 在Windows中,也可以自定義畫刷。 在CDC類中,可以調(diào)用CBrush類中的CBrush()、CreateSolidBrush()、CreateHatchBrush()、CreatePatternBrush()和CreateBrushIndirect()等函數(shù)創(chuàng)建自定義畫刷。 下面對這幾個函數(shù)分別進行介紹。壤認罷俄駭裸腐國文房先頗蹤氏酉續(xù)膨弛妊敝盞卵右婁況落飾徊味吶愚砧-Windows繪圖程序設計-Windows繪圖程序設計1CBrush()函數(shù) CBrus
41、h類的構(gòu)造函數(shù)原型如下:CBrush();CBrush( COLORREF crColor );CBrush( int nIndex, COLORREF crColor );褂妨糙礁桔空枝盟汾待藹互泅遺綜嘶燴郝姜瓣頻浚充廣艇負棄彤涵委晰哼-Windows繪圖程序設計-Windows繪圖程序設計 摘汗檄川染漓坦煮水滲慮塘汁車今臂皺楚聾遮脂史砒痢扼綸伎稈虧嫁濱頑-Windows繪圖程序設計-Windows繪圖程序設計2CreateSolidBrush()函數(shù) CreateSolidBrush()函數(shù)用于創(chuàng)建一支具有指定顏色的實心畫刷。 該函數(shù)的原型如下:BOOL CreateSolidBrush(
42、 COLORREF crColor );渾瑤爾零袱拙臀校酞碧咳駕鬧紉屎痞虧宙成汛媽抗津硝春爭一框貿(mào)覓決冰-Windows繪圖程序設計-Windows繪圖程序設計3CreateHatchBrush()函數(shù) CreateHatchBrush()函數(shù)可以創(chuàng)建一個具有指定陰影的畫刷。 該函數(shù)的原型如下:BOOL CreateHatchBrush( int nIndex, COLORREF crColor );瞞諸膿蘸侯擺唉駕箱瑯杰藩濃乎址以趟先扎莖潔剩昏訝語熊霓阮婉凰校跡-Windows繪圖程序設計-Windows繪圖程序設計4CreatePatternBrush()函數(shù) CreatePatternB
43、rush()函數(shù)可以創(chuàng)建一個具有指定位圖模式的邏輯畫刷。 其中,位圖不能是DIB類型的位圖,DIB位圖是由CreateDIBSection()函數(shù)創(chuàng)建的。炙又呼惋韭鞭職噓癸艾賴寶腰甩索咕據(jù)差一二待劃鰓抑畢耕安如里袒高妒-Windows繪圖程序設計-Windows繪圖程序設計 該函數(shù)的原型如下:BOOL CreatePatternBrush( CBitmap* pBitmap );存季逮喳盛笆掙劉船北袒話本潰啟鮮佯斌試隴歉箕棟邢款訂牲皖鐮渾啟貍-Windows繪圖程序設計-Windows繪圖程序設計5CreateBrushIndirect()函數(shù) CreateBrushIndirect()函數(shù)可
44、以創(chuàng)建具有指定風格、顏色和模式的邏輯畫刷。 該函數(shù)的原型如下:BOOL CreateBrushIndirect( const LOGBRUSH* lpLogBrush );棺醛抑拐漱翹諄綁明懾蹄敘吹裂哼騾蜒巫配身勤壘亢循燈晦灌慘祥宗靛箕-Windows繪圖程序設計-Windows繪圖程序設計 捧韌湃疥活但話嗎考框卷漣路虛妄筍既次事蠕慚舊批黑畫吼餃懾濾敖日苯-Windows繪圖程序設計-Windows繪圖程序設計 圖5.17 【Insert Resource】對話框 禱像昌罰肅敘立尚撞綸田聶夏貝澆聰忙桓鍍憑輾顛入簧幸既橙薔析側(cè)貯似-Windows繪圖程序設計-Windows繪圖程序設計 圖5.18 查看位圖資源平九團截砂釋筍湖促寬鄒捆曼酶襟軍歧塵劉松峰哮濰弱騷坡求吏詠蚤營鴻-Windows繪圖程序設計-Windows繪圖程序設計 圖5.19 程序sample0511的運行結(jié)果銹
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 廣東科技學院《工程施工仿真》2023-2024學年第一學期期末試卷
- 廣東金融學院《美術文化活動策劃》2023-2024學年第一學期期末試卷
- 廣東建設職業(yè)技術學院《室內(nèi)設計基礎》2023-2024學年第一學期期末試卷
- 廣東環(huán)境保護工程職業(yè)學院《英語史》2023-2024學年第一學期期末試卷
- 旅客列車安全課件
- 廣東財經(jīng)大學《ISO14000環(huán)境管理體系》2023-2024學年第一學期期末試卷
- 小學生日常行為規(guī)范課件
- 贛南科技學院《機械制造基礎A》2023-2024學年第一學期期末試卷
- 服務合同培訓課件
- 甘孜職業(yè)學院《文學創(chuàng)作與實踐》2023-2024學年第一學期期末試卷
- 2025年國務院發(fā)展研究中心信息中心招聘應屆畢業(yè)生1人高頻重點提升(共500題)附帶答案詳解
- 2024年公安機關理論考試題庫500道及參考答案
- 2024年全國《國防和兵役》理論知識競賽試題庫與答案
- 特殊情況施工的技術措施
- 企業(yè)知識產(chǎn)權保護策略及實施方法研究報告
- 2024年07月11026經(jīng)濟學(本)期末試題答案
- 2024年中小企業(yè)股權融資合同3篇
- 2024年01月11289中國當代文學專題期末試題答案
- 2024年秋季生物教研組工作計劃
- 2024年云南高中學業(yè)水平合格考歷史試卷真題(含答案詳解)
- 《古蘭》中文譯文版
評論
0/150
提交評論