資源描述:
《Visual C++程序設(shè)計(jì)教程 段智毅 第9章 文字和圖形處理技術(shù) 》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。
1、第9章文字和圖形處理技術(shù)【學(xué)習(xí)目標(biāo)】與其他許多編程工具相比,VisualC++在圖形、圖像的處理方面更勝一籌。在編寫Windows風(fēng)格的程序過程中,載入位圖或者創(chuàng)建位圖都是程序員經(jīng)常使用的方法,只有熟練掌握了位圖的使用方法,才能編寫出標(biāo)準(zhǔn)且美觀的應(yīng)用程序。本章中將介紹與VisualC++相關(guān)的圖形、圖像處理知識(shí),對(duì)繪圖所需要的類進(jìn)行充分講解,對(duì)于各種文本和位圖的操作進(jìn)行細(xì)致地介紹,并通過具體的實(shí)例來對(duì)繪圖函數(shù)的用法進(jìn)行詳細(xì)的說明。通過學(xué)習(xí)本章,讀者可以達(dá)到以下學(xué)習(xí)目的:l了解GDI對(duì)象和設(shè)備上下文l掌握各種樣式文本的輸出l掌握各種
2、圖形的繪制l掌握對(duì)圖形進(jìn)行顏色填充l掌握?qǐng)D像的繪制l掌握?qǐng)D像在窗口中的一些操作課件制作人:宋坤【學(xué)習(xí)導(dǎo)航】文本和圖形圖像處理技術(shù)在應(yīng)用程序的許多方面被廣泛使用。例如,設(shè)計(jì)應(yīng)用程序界面、設(shè)計(jì)第三方控件、設(shè)計(jì)多媒體應(yīng)用程序等。本章從文本輸出、圖形繪制和圖像顯示3個(gè)方面介紹了其在VisualC++中的實(shí)現(xiàn)。本章在書中的學(xué)習(xí)位置如圖9-1所示。課件制作人:宋坤【知識(shí)框架】本章學(xué)習(xí)內(nèi)容知識(shí)框架如圖9-2所示。課件制作人:宋坤本章目錄9.1GDI概述9.2設(shè)備上下文介紹9.3GDI對(duì)象9.4文本輸出9.5繪制圖形9.6繪制圖像9.7課后習(xí)題√
3、√√√√√√課件制作人:宋坤9.1GDI概述以往許多MSDOS程序采用直接向視頻存儲(chǔ)區(qū)或打印機(jī)端口輸送數(shù)據(jù),這種做法不利之處是需要各種顯示卡(低分辨率彩色圖形顯示卡、加強(qiáng)圖形顯示卡以及圖像圖形陣)或打印機(jī)驅(qū)動(dòng)程序,支持所有這些設(shè)備意味著要用大量的編程來包含這些驅(qū)動(dòng)程序(為每一個(gè)設(shè)備編寫不同的代碼)。為了減輕開發(fā)程序的難度,Windows提供了一個(gè)抽象的接口,圖形設(shè)備接口GraphicsDeviceInterface(GDI)。另外,Windows還提供了各種顯示卡及打印機(jī)的驅(qū)動(dòng)程序,這樣在寫程序時(shí)就可以不必關(guān)心顯示卡和打印機(jī)的類型
4、,簡(jiǎn)化了程序開發(fā)的難度。其實(shí),GDI是微軟公司提供的一組繪圖函數(shù),通常稱之為GDI函數(shù)。使用這些函數(shù)可以繪制各種圖形。本章將介紹有關(guān)GDI的相關(guān)知識(shí)。課件制作人:宋坤9.2設(shè)備上下文介紹設(shè)備上下文的英文全稱是DeviceContext,簡(jiǎn)稱為DC。設(shè)備上下文是用來繪制圖形的邏輯設(shè)備,編程人員可以在該設(shè)備上繪制直線、曲線和立方體等各式各樣的幾何圖案及在設(shè)備上輸出文字。在開發(fā)應(yīng)用程序時(shí)往往要在輸出設(shè)備上輸出程序的運(yùn)行結(jié)果。輸出設(shè)備通常指的是顯示器和打印機(jī),但程序員需要了解顯示器和打印機(jī)的特性才能將結(jié)果顯示在輸出設(shè)備上,而了解顯示器和打
5、印機(jī)特性這個(gè)過程會(huì)花去程序員的大部分時(shí)間,為減少開發(fā)應(yīng)用程序的開發(fā)時(shí)間及開發(fā)難度,就提出設(shè)備上下文這個(gè)概念。通過使用設(shè)備上下文,編程人員可以不必關(guān)心輸出設(shè)備的具體特性,直接繪制最終的結(jié)果,而余下的工作都交給系統(tǒng)來完成。在Windows應(yīng)用程序中,每個(gè)窗口都關(guān)聯(lián)有設(shè)備上下文,用戶只要獲得了窗口的設(shè)備上下文,就可以在窗口中繪制各種文本、圖形圖像等信息了。例如:下面的語句從對(duì)話框中獲得了一個(gè)設(shè)備上下文句柄,并在設(shè)備上下文中輸出文本,方法如下。(1)新建一個(gè)對(duì)話框應(yīng)用程序。(2)在對(duì)話框類的OnPoint方法中添加如下代碼:voidCDr
6、awDlgDlg::OnPaint(){HDChDC;hDC=GetDC()->m_hDC;chardata[]="明日科技有限公司!";TextOut(hDC,60,30,data,strlen(data));//代碼省略}在向設(shè)備上下文中輸出文本時(shí),文本將顯示在對(duì)話框中,如圖9-1所示。課件制作人:宋坤9.2設(shè)備上下文介紹Windows操作系統(tǒng)提供了一組WindowsAPI函數(shù)用于在設(shè)備上下文中繪制信息,通常被稱為GDI函數(shù)。在上面的例子中使用的TextOut函數(shù)便是其中之一。在MFC中,為了方便用戶繪圖,提供了一個(gè)設(shè)備上下文
7、類——CDC,該類中封裝的多個(gè)方法用于在屏幕中繪制信息,這些方法多數(shù)是與GDI函數(shù)一一對(duì)應(yīng)的。在后面的章節(jié)中將逐步介紹這些方法在實(shí)際中的應(yīng)用。課件制作人:宋坤9.3GDI對(duì)象為了方便用戶在設(shè)備上下文中繪制信息,Windows提供了6個(gè)GDI對(duì)象,分別為畫筆、畫刷、字體、位圖、調(diào)色板和區(qū)域。MFC對(duì)這6個(gè)對(duì)象分別進(jìn)行了封裝,形成了6個(gè)對(duì)應(yīng)的類,分別為“CPen”、“CBrush”、“CFont”、“CBitmap”、“CPalette”和“CRgn”。下面分別對(duì)這6個(gè)類進(jìn)行介紹。?CPenCPen類封裝了Windows的畫筆對(duì)象。畫
8、筆對(duì)象主要用于繪制線條,通過畫筆對(duì)象,可以設(shè)置繪制線條的寬度、顏色、風(fēng)格等信息。CPen類的主要方法如下。1.CreatePen方法CreatePen方法用于動(dòng)態(tài)創(chuàng)建一個(gè)畫筆對(duì)象。語法:BOOLCreatePen(intnPenStyle,intn