計(jì)算機(jī)圖形顯示基礎(chǔ)_第1頁
計(jì)算機(jī)圖形顯示基礎(chǔ)_第2頁
計(jì)算機(jī)圖形顯示基礎(chǔ)_第3頁
計(jì)算機(jī)圖形顯示基礎(chǔ)_第4頁
計(jì)算機(jī)圖形顯示基礎(chǔ)_第5頁
已閱讀5頁,還剩56頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

計(jì)算機(jī)圖形顯示基礎(chǔ)課件第1頁,共61頁,2023年,2月20日,星期四 第一章顯示技術(shù)本章講述液晶顯示器,等離子顯示器和CRT顯示器的工作原理。重點(diǎn):各顯示設(shè)備的基本工作原理及其優(yōu)缺點(diǎn)。第一節(jié)

液晶顯示器和等離子顯示器

一、液晶顯示器

(1)液晶的分類和特點(diǎn)

液晶是一種有機(jī)化合物,液態(tài)晶體,是某些有機(jī)物在一定溫度范圍內(nèi)的中間狀態(tài)。在這種狀態(tài)下,液晶既具有流動(dòng)性和連續(xù)性,又呈現(xiàn)晶體的性質(zhì)。液晶相溫度,及上下限。分類向列型(分子軸向著同一方向),膽甾型(層與層之間分子軸向發(fā)生扭曲),近晶型(分子軸向一致,而且按層排列)

第2頁,共61頁,2023年,2月20日,星期四第3頁,共61頁,2023年,2月20日,星期四特點(diǎn)

優(yōu)點(diǎn)

(1)低電壓,微功耗;(2)被動(dòng)型顯示,不怕亮光。本身不發(fā)光,靠調(diào)制外界光達(dá)到顯示的目的。在明亮的室外也能顯示。(3)體積小,外型薄。(4)顯示面積大。(5)無輻射,無污染。缺點(diǎn):(1)響應(yīng)速度慢,余輝長(一般為毫秒級(jí))原因是液晶依靠外加電場作用下,液晶分子排列發(fā)生變化,由于材料的粘滯度影響,響應(yīng)速度慢。(2)非主動(dòng)發(fā)光,暗時(shí)不能顯示,需要加背光。(3)顯示視角小。液晶顯示器依靠液晶分子的各向異性,對(duì)不同方向的入射光,反射率不一樣,所以視角較小。

第4頁,共61頁,2023年,2月20日,星期四(2)液晶結(jié)構(gòu)及工作原理

當(dāng)偏振光通過某些透明物體時(shí),偏振光的偏振面將會(huì)旋轉(zhuǎn)異一定的角度,這種現(xiàn)象稱為偏振面的旋轉(zhuǎn)。能使偏振光的偏振面發(fā)生旋轉(zhuǎn)的物質(zhì)稱為旋光物質(zhì)。液晶即是一種旋光物質(zhì)。扭曲向列效應(yīng)就是利用外加電壓控制偏振光偏振面的旋轉(zhuǎn)來達(dá)到顯示的目的。

第5頁,共61頁,2023年,2月20日,星期四第6頁,共61頁,2023年,2月20日,星期四(3)液晶顯示器的驅(qū)動(dòng)電路

1靜態(tài)驅(qū)動(dòng)電路。

第7頁,共61頁,2023年,2月20日,星期四2時(shí)分割法驅(qū)動(dòng)筆段型LCD

時(shí)分割驅(qū)動(dòng)電路把背電極分為COM0,COM1,COM2三組,把字段電極分為三組S1,S2,S3。在S1,S2,S3和COM0,COM1,COM2上加上不同的驅(qū)動(dòng)電壓,就可以使需要顯示的字段的字段電極電壓-背電極電壓達(dá)到顯示電壓,從而達(dá)到顯示的目的。

第8頁,共61頁,2023年,2月20日,星期四(4)液晶顯示器的灰度和彩色

1灰度顯示法大容量點(diǎn)陣圖形顯示器中,灰度顯示是不可缺少的。并且灰度顯示也是彩色顯示的基礎(chǔ)?;叶蕊@示方法主要有空間灰度調(diào)制和時(shí)間灰度調(diào)制。

a.空間灰度調(diào)制

將顯示象素劃分為若干個(gè)可以單獨(dú)控制的“子象素”,當(dāng)顯示象素中不同數(shù)量的子象素被選通時(shí),在一定距離外觀看,象素將顯示不同的灰度等級(jí)。優(yōu)點(diǎn):不需要特殊驅(qū)動(dòng)和控制技巧。缺點(diǎn):要犧牲一定的分辨率。

第9頁,共61頁,2023年,2月20日,星期四b.時(shí)間灰度調(diào)制

在單位時(shí)間內(nèi),控制顯示象素的選通、截止時(shí)間長短,使顯示象素在觀察者眼中形成不同的灰度等級(jí)。任何點(diǎn)陣圖形顯示,都是由動(dòng)態(tài)掃描驅(qū)動(dòng)的一禎禎畫面組成。選取若干禎為一個(gè)單位,在這個(gè)單位內(nèi)某一象素在不同的禎內(nèi)被選通,在另一些禎中不被選通。則該象素就會(huì)呈現(xiàn)出不同的灰度等級(jí)來。

2.彩色顯示法

LCD本身不能實(shí)現(xiàn)真正意義上的全彩色顯示,采用的是“微彩色膜方式”。他將一個(gè)點(diǎn)陣象素分割為三個(gè)子象素,并在這三個(gè)子象素表面設(shè)置R,G,B三個(gè)微型濾色膜。LCD僅作為光閥門使用,控制每個(gè)子象素光閥就可以控制R,G,B三個(gè)濾色膜通過光的通斷??刂迫齻€(gè)子象素光線的灰度級(jí)別,就可以控制R,G,B三個(gè)子象素通過的不同光量,就可以混合出千萬中顏色。

第10頁,共61頁,2023年,2月20日,星期四液晶本身只起一個(gè)光開關(guān)的作用,可以稱為液晶閥。如果只能控制液晶閥的開關(guān),則R,G,B可以組合成八種顏色。如果各顏色的子象素實(shí)現(xiàn)多級(jí)灰度,則可實(shí)現(xiàn)非常豐富的多種顏色。

第11頁,共61頁,2023年,2月20日,星期四二、等離子顯示器

(1)工作原理

等離子體:

當(dāng)氣體受到高電壓作用或強(qiáng)大射線照射時(shí),外圍電子擺脫原子核的束縛,由自由電子、帶正電離子組成的電中性的氣體就叫等離子體。等離子顯示器就是利用氣體放電發(fā)光進(jìn)行平面顯示的一種裝置。七段式等離子數(shù)字顯示器件由兩塊平板玻璃、封接框和排氣管組成。在前玻璃板上噴涂有透明位電極,后玻璃板上有和位電極相同的七段筆畫電極。上面沉淀有一層透明介質(zhì),防止離子直接撞擊電極。兩玻璃片之間距離為0.2-0.3mm。通過排氣管抽去空腔中的氣體,充入以氖為主的氖氬混合氣體。

第12頁,共61頁,2023年,2月20日,星期四等離子顯示器用交變電壓驅(qū)動(dòng)。當(dāng)外加電壓,放電單元兩端電壓超過著火電壓時(shí),單元放電。產(chǎn)生大量的離子和電子,它們受電場加速,電子向正極運(yùn)動(dòng),離子向負(fù)極運(yùn)動(dòng)。附著在玻璃壁上。由于這些電荷在兩極之間產(chǎn)生“壁電壓”,它使放電單元內(nèi)電場迅速減弱,當(dāng)減弱到一定程度時(shí),放電停止。隨后,外加電壓相位改變,交流電壓的后半周期到來,因?yàn)橛星鞍胫芩a(chǎn)生的壁電壓存在,協(xié)助放電。于是在較低的外電壓下,放電單元開始放電。這樣,交流電壓所產(chǎn)生的脈沖放電每半周一次。每次放電都伴著光輸出,達(dá)到顯示信息的目的。

第13頁,共61頁,2023年,2月20日,星期四(2)等離子顯示器驅(qū)動(dòng)

交流電壓驅(qū)動(dòng),電壓頻率要達(dá)到(10~50kHz),工作電壓130~200V,才能正常工作。位電極電壓和筆劃電極電壓相位相差180度。幅值為Ut,Ut大于著火電壓Up的一半。只有在筆畫電極和位電極之間同時(shí)加上幅值為Ut的脈沖電壓時(shí),等離子顯示器才能著火發(fā)亮。

點(diǎn)陣型PDP,兩塊玻璃基板布置多條相互正交的條列電極,每個(gè)交點(diǎn)就是一個(gè)象素。

彩色PDP由三個(gè)單元組成一個(gè)象素,其中每個(gè)單元電極兩側(cè)分別涂有紅、綠、藍(lán)熒光粉。放電產(chǎn)生紫外線,由紫外線激勵(lì)熒光粉發(fā)出顏色。

第14頁,共61頁,2023年,2月20日,星期四第15頁,共61頁,2023年,2月20日,星期四(三)特點(diǎn)

優(yōu)點(diǎn):(1)發(fā)光明亮,均勻,不易使人疲勞。(2)平板顯示器,很薄,幾個(gè)毫米??梢宰鞒纱笮蛿?shù)字顯示器。(3)溫度特性好,在-55~+110度都可以正??梢燥@示。

第16頁,共61頁,2023年,2月20日,星期四第二節(jié)

CRT顯示器

光柵式CRT圖形顯示技術(shù)是一種被廣泛應(yīng)用的技術(shù)。一、陰極射線管(CRT)及光柵掃描顯示原理1陰極射線管陰極射線管是一種大型電真空顯示器件。由電子槍、偏轉(zhuǎn)系統(tǒng)和熒光屏三個(gè)基本部分組成。陰極射線管末端有一個(gè)電子槍,能夠發(fā)射出電子束,這束電子束被聚焦到熒光屏上。在熒光屏的內(nèi)表面涂有熒光物質(zhì)薄層,電子束撞擊熒光屏而形成熒光亮點(diǎn)。電子束的偏轉(zhuǎn)使用電磁偏轉(zhuǎn)法。在和管頸軸線垂直的平面內(nèi),加上兩個(gè)相互垂直的磁場,電子束在洛侖茲力的作用下而發(fā)生水平或垂直偏轉(zhuǎn)。第17頁,共61頁,2023年,2月20日,星期四第18頁,共61頁,2023年,2月20日,星期四(2)光柵的掃描和消隱

CRT顯示器顯示字符和圖形,采用光柵掃描方式。光柵掃描包括水平掃描和垂直掃描。電子束在水平和垂直掃描的聯(lián)合作用下,在屏幕上由左到右,由上到下進(jìn)行運(yùn)動(dòng)。水平(垂直)同步信號(hào)、水平(垂直)消隱信號(hào)以及欲顯示的字符、圖形信號(hào)或視頻信號(hào)混合在一起,加到CRT控制柵極上,這個(gè)信號(hào)稱為全電視信號(hào)。第19頁,共61頁,2023年,2月20日,星期四第20頁,共61頁,2023年,2月20日,星期四二、彩色CRT工作原理彩色CRT具有三個(gè)電子槍,呈品字型排列。在熒光屏上,每一個(gè)象素由紅、綠、蘭三個(gè)子象素構(gòu)成。從三個(gè)電子槍上射出的三個(gè)電子束通過蔭罩進(jìn)行聚焦,分別打在RGB三個(gè)基色子象素上,產(chǎn)生三個(gè)顏色的混合,從而產(chǎn)生彩色熒光。第21頁,共61頁,2023年,2月20日,星期四第二章C++語言基礎(chǔ)

第一節(jié)面向?qū)ο蟮腃++語言重點(diǎn):(1)理解面向?qū)ο蠛兔嫦蜻^程程序設(shè)計(jì)的區(qū)別

(2)了解C++語言和C語言的主要區(qū)別。

程序設(shè)計(jì)有兩種方式:一種是面向過程的程序設(shè)計(jì)方法(POL,Procedure-OrientedProgramming)。C語言即是一種?!皵?shù)據(jù)+算法=程序”。先定義數(shù)據(jù),再根據(jù)算法對(duì)這些數(shù)據(jù)進(jìn)行處理,最后得到輸出結(jié)果。面向?qū)ο蟮某绦蛟O(shè)計(jì)(Object-OrientedProgramming,簡稱OOP)將數(shù)據(jù)和對(duì)數(shù)據(jù)的操作相結(jié)合,作為一個(gè)整體來處理。將性質(zhì)相同的一類對(duì)象和對(duì)象的操作概括為一種新的數(shù)據(jù)類型—類,同時(shí)類之間可以繼承和派生。概括為“對(duì)象+消息=面向?qū)ο蟪绦颉薄?/p>

第22頁,共61頁,2023年,2月20日,星期四一、C++與C語言的一般語法區(qū)別

1.注釋C++支持的注釋方法有兩種:(1)/*……*/用于大段的注釋

(2)//…….用于單行注釋。2.變量定義

C語言的變量定義必須放在所有可執(zhí)行語句之前。而C++不再區(qū)分變量定義部分和執(zhí)行部分,可以在函數(shù)體內(nèi)任意位置定義局部變量。

intC=1;for(inti=0;i<10;i++){C++;}

(1)局部變量。在一個(gè)函數(shù)體內(nèi)定義的變量,只在本函數(shù)范圍內(nèi)有效,函數(shù)體外不能訪問。

(2)全局變量。在函數(shù)體外定義的變量,有效范圍是從定義處到整個(gè)源文件的結(jié)束。

3.動(dòng)態(tài)變量的創(chuàng)建

C語言中用函數(shù)malloc()動(dòng)態(tài)分配存儲(chǔ)空間,用函數(shù)free()動(dòng)態(tài)釋放已分配的存儲(chǔ)空間。C++中提供了兩個(gè)新的動(dòng)態(tài)分配存儲(chǔ)空間的運(yùn)算符new和delete。第23頁,共61頁,2023年,2月20日,星期四二、指針和引用

引用是C++的一個(gè)特征。指針是對(duì)象(變量)的地址,而引用是給對(duì)象的地址起一個(gè)別名。引用經(jīng)常用于函數(shù)參數(shù)表中,作為參數(shù)實(shí)現(xiàn)雙向傳值。

1.引用變量

引用變量的說明方式為:

<類型>&引用名=變量名;

2.引用參數(shù)

引用用的最多的場合是在函數(shù)的參數(shù)表中。在C++中,可以使用引用參數(shù),即把形參定義為引用變量,這樣在調(diào)用函數(shù)中處理更為簡單。

第24頁,共61頁,2023年,2月20日,星期四三、函數(shù)的改進(jìn)

1.函數(shù)的重載

函數(shù)重載是指同一個(gè)函數(shù)名可以對(duì)應(yīng)多個(gè)函數(shù)的實(shí)現(xiàn)。函數(shù)重載允許一個(gè)程序內(nèi)聲明多個(gè)名稱相同的函數(shù),這些函數(shù)通常執(zhí)行相同的功能,但是帶有不同類型、不同數(shù)目的參數(shù)或是不同類型的返回值。2.設(shè)置默認(rèn)參數(shù) 調(diào)用函數(shù)時(shí),若某個(gè)參數(shù)有一個(gè)經(jīng)常用的值,在聲明函數(shù)原型的時(shí)候,可以用該值作為函數(shù)參數(shù)的默認(rèn)值。

第25頁,共61頁,2023年,2月20日,星期四第二節(jié)對(duì)象和類類是面向?qū)ο蟪绦蛟O(shè)計(jì)的核心,類描述了具有相同特性和相同行為的對(duì)象,是對(duì)一組對(duì)象的抽象。它實(shí)質(zhì)上是一種新的數(shù)據(jù)類型。和C語言的結(jié)構(gòu)有相同之處。重點(diǎn):類和對(duì)象抽象概念的理解及其定義方法,派生、繼承的含義。難點(diǎn):概念比較抽象,結(jié)合實(shí)例進(jìn)行理解。第26頁,共61頁,2023年,2月20日,星期四第二節(jié)對(duì)象和類類是面向?qū)ο蟪绦蛟O(shè)計(jì)的核心,類描述了具有相同特性和相同行為的對(duì)象,是對(duì)一組對(duì)象的抽象。它實(shí)質(zhì)上是一種新的數(shù)據(jù)類型。和C語言的結(jié)構(gòu)有相同之處。一、類(一)類的定義

類的一般定義形式為:Point類定義1class類名

{private://私有數(shù)據(jù)及函數(shù);protected://受保護(hù)數(shù)據(jù)及變量;

public://公有數(shù)據(jù)及函數(shù)}

第27頁,共61頁,2023年,2月20日,星期四Point類及其定義classPoint{intxy;public:voidset_x(intk){x=k;} intget_x(){returnx;}voidset_y(intk){y=k;} intget_y(){returny;} };

其中,Point是類名標(biāo)識(shí)符。在此類中,x和y是兩個(gè)私有數(shù)據(jù)成員,分別表示點(diǎn)的橫坐標(biāo)和縱坐標(biāo)。set_x和set_y函數(shù)分別用于設(shè)置x與y,即點(diǎn)的坐標(biāo)值;get_x和get_y都是沒有參數(shù)的函數(shù),分別返回點(diǎn)的橫、縱坐標(biāo)。

第28頁,共61頁,2023年,2月20日,星期四1、成員的訪問類型

(1)private私有的,是指只有本類中所定義的成員函數(shù)才能直接訪問這些私有數(shù)據(jù)或調(diào)用這些私有函數(shù),任何該類以外的函數(shù)都無法去訪問這些私有數(shù)據(jù)或調(diào)用私有函數(shù)。否則,編譯會(huì)出現(xiàn)錯(cuò)誤。(2)protected

受保護(hù)的成員除了被本類的成員函數(shù)存取及調(diào)用外,還可以被派生類的成員函數(shù)訪問。類以外的函數(shù)無法訪問(3)public

公有的成員可以被本類以外的任何函數(shù)訪問。

一般情況下數(shù)據(jù)成員都定義成私有的,不允許訪問,這樣能保證數(shù)據(jù)的安全性和隱蔽性。把成員函數(shù)定義成公有的,作為類和外界操作的接口,保護(hù)數(shù)據(jù)成員不被隨意修改。

第29頁,共61頁,2023年,2月20日,星期四

2、

成員的組成類的成員分為兩大類—數(shù)據(jù)成員和成員函數(shù)數(shù)據(jù)成員??梢允呛唵蔚淖兞?,也可以是用戶自己定義的變量。也可以是已經(jīng)定義的一個(gè)類的對(duì)象。成員函數(shù)。類的成員函數(shù)定義如果比較短,可以放在類定義內(nèi)。如果類的定義比較長,則要放在類定義之外。而函數(shù)原型則要放在類之內(nèi)。一般一個(gè)類分為兩部分即兩個(gè)文件,類的定義部分放在一個(gè).h頭文件里。成員函數(shù)的實(shí)現(xiàn)部分放在一個(gè).cpp的源文件里。(二)對(duì)象的定義 類是一種新的數(shù)據(jù)類型,類的對(duì)象定義實(shí)質(zhì)上就是變量的定義。和int,float等變量的定義相同。所以也有普通對(duì)象、對(duì)象數(shù)組、對(duì)象指針等。

第30頁,共61頁,2023年,2月20日,星期四(三)函數(shù)和析構(gòu)函數(shù)構(gòu)造函數(shù)和析構(gòu)函數(shù)是類的特殊成員函數(shù)。構(gòu)造函數(shù)名與類名相同。析構(gòu)函數(shù)是在類名前加一個(gè)符號(hào)“~”。如果用戶沒有定義構(gòu)造函數(shù)和析構(gòu)函數(shù),系統(tǒng)將自動(dòng)產(chǎn)生默認(rèn)的構(gòu)造函數(shù)和析構(gòu)函數(shù)。二、繼承

繼承描述的是類與類之間的關(guān)系。把在已有類的基礎(chǔ)上定義新類的過程稱為繼承。繼承可以實(shí)現(xiàn)代碼重用,因而繼承機(jī)制可以縮短軟件開發(fā)周期,加快編程速度。(一)基類和派生類

被繼承的類稱為基類(或父類)?;诟割惒⒃黾有绿匦詮亩缮龅念惙Q為派生類(或子類)。派生類保留了父類中的數(shù)據(jù)成員和成員函數(shù),增加了基類中沒有的一些數(shù)據(jù)成員和成員函數(shù),是對(duì)基類功能的擴(kuò)展。

第31頁,共61頁,2023年,2月20日,星期四派生類的定義一般格式如下:class派生類名:繼承方式(public/protected/private)基類名{ //派生類新定義的成員

}

(二)多繼承繼承分為單繼承和多繼承。單繼承指派生類一個(gè)基類派生,多繼承指派生類從多個(gè)基類派生,具有多個(gè)基類的特性。多繼承派生類的格式定義如下:class派生類名:繼承方式1基類名1,…,繼承方式n基類名n{//本派生類新定義的成員

};第32頁,共61頁,2023年,2月20日,星期四

第三章可視化編程語言VisualC++

第一節(jié)

VisualC++6.0開發(fā)環(huán)境認(rèn)識(shí)

重點(diǎn):熟悉可視化編程工具的開發(fā)環(huán)境,了解各種工具的用法。

VisualC++6.0提供了可視化的集成開發(fā)環(huán)境,包括AppWizard、WorkSpace、ClassWizard和WizardBar等工具。一、認(rèn)識(shí)VisualC++6.0集成開發(fā)環(huán)境

微軟的DeveloperStudio是一個(gè)通用的可視化集成開發(fā)環(huán)境,支持VisualC++、VisualBasic等可視化編程語言。 窗口界面包括標(biāo)題欄、菜單欄、工具欄、項(xiàng)目工作區(qū)、編輯區(qū)和輸出區(qū)。

第33頁,共61頁,2023年,2月20日,星期四項(xiàng)目工作區(qū)WizardBar編輯區(qū)輸出框第34頁,共61頁,2023年,2月20日,星期四第二節(jié)MFC應(yīng)用程序概述重點(diǎn)(1)了解Windows程序的特點(diǎn)。(2)熟悉MFC應(yīng)用程序的框架(3)理解Windows程序的消息傳遞機(jī)制。難點(diǎn)(1)Windows下應(yīng)用程序的結(jié)構(gòu)體系。(2)交互式應(yīng)用程序的消息機(jī)制。第35頁,共61頁,2023年,2月20日,星期四一、窗口編程基礎(chǔ)

Windows應(yīng)用程序是運(yùn)行在Windows操作系統(tǒng)上的,Windows操作系統(tǒng)是一個(gè)多任務(wù)操作系統(tǒng)。1.窗口。窗口是應(yīng)用程序與用戶進(jìn)行交互的界面,應(yīng)用程序通過窗口傳遞信息給用戶,同樣,用戶通過窗口輸入數(shù)據(jù),給應(yīng)用程序發(fā)出命令。

2.

消息和消息隊(duì)列

Windows應(yīng)用程序是利用消息(Message)來和用戶以及操作系統(tǒng)進(jìn)行交換信息的。消息的作用是通知一個(gè)應(yīng)用程序某個(gè)確定的事件的發(fā)生,例如單擊鼠標(biāo)左鍵。這時(shí)候應(yīng)用程序會(huì)對(duì)這個(gè)事件做出響應(yīng),如何響應(yīng)是在程序中定義的,也就是編寫了對(duì)應(yīng)該消息(或事件)的處理函數(shù)代碼。3、事件驅(qū)動(dòng)的程序設(shè)計(jì)

第36頁,共61頁,2023年,2月20日,星期四二、MFC應(yīng)用程序框架

如果用WindowsAPI(ApplicationProgrammingInterface)函數(shù)編制Windows應(yīng)用程序,需要做大量的工作。如果用AppWizard來創(chuàng)建一個(gè)MFC單文檔應(yīng)用程序,不需要做任何工作,就可以生成一個(gè)具有常用工具欄、菜單欄和狀態(tài)欄的標(biāo)準(zhǔn)Windows應(yīng)用程序。

MFC(MicrosoftFoundationClass)是微軟編寫的一套專門用于Windows編程的基礎(chǔ)類庫。VC++編程基本上是圍繞MFC類庫來進(jìn)行的。

第37頁,共61頁,2023年,2月20日,星期四(一)構(gòu)建Windows應(yīng)用程序的基本類由VC++提供的AppWizard生成的單文檔應(yīng)用程序有五個(gè)現(xiàn)成的類。分別是CDrawApp,CMainFrame、CDrawView、CDrawDocument以及CAboutDlg。

類名稱

基類

說明

CDrawApp CWinApp 應(yīng)用程序類

CMainFrame CFrameWnd 窗口框架類

CDrawDoc CDocument 文檔類

CDrawView CView 視圖類第38頁,共61頁,2023年,2月20日,星期四(二)文檔/視圖結(jié)構(gòu)

文檔/視圖結(jié)構(gòu)是MFC應(yīng)用程序最核心的概念,它把應(yīng)用程序的數(shù)據(jù)和對(duì)數(shù)據(jù)的顯示、操作分離開。當(dāng)打開一個(gè)文件時(shí),從文件讀入的數(shù)據(jù)保存在文檔類對(duì)象里,而視圖對(duì)象是對(duì)文檔類中數(shù)據(jù)的可視化表示,提供和用戶交互的界面允許用戶查看、編輯數(shù)據(jù)。應(yīng)用程序的數(shù)據(jù)存儲(chǔ)在文檔對(duì)象中,并可以顯示在視圖中。一個(gè)文檔可以對(duì)應(yīng)多個(gè)視圖,即文檔中的數(shù)據(jù)可以以不同的方式顯示。例如:在Excel中,同樣的數(shù)據(jù)可以以表格的形式表示,也可以以圖標(biāo)的形式表示。

一個(gè)MFC應(yīng)用程序開始運(yùn)行后。文檔類對(duì)象負(fù)責(zé)管理數(shù)據(jù),視圖類對(duì)象反映顯示當(dāng)前文檔對(duì)象中的數(shù)據(jù),視圖和主框架提供可視化的界面與用戶實(shí)現(xiàn)交互

第39頁,共61頁,2023年,2月20日,星期四三、消息映射

Windows程序是消息或事件驅(qū)動(dòng)的。(一)消息的類別1.窗口消息。用戶與窗口交互會(huì)產(chǎn)生窗口消息,例如單擊鼠標(biāo)左鍵或右鍵,移動(dòng)鼠標(biāo)。輸入數(shù)字或字符等。視圖類對(duì)象,窗口類對(duì)象都能處理窗口消息。窗口消息的格式為:WM_XXX,例如窗口關(guān)閉WM_CLOSE,鼠標(biāo)左鍵按下WM_LBUTTONDOWN等。2.命令消息

選擇菜單項(xiàng)、單擊工具按鈕會(huì)產(chǎn)生命令消息。

命令消息的格式是:WM_COMMAND第40頁,共61頁,2023年,2月20日,星期四(二)消息映射系統(tǒng)

AppWizard生成的CMainFrame,CDrawDoc,CDrawView都能夠接受窗口消息或命令消息,并調(diào)用自己類中已定義的相應(yīng)函數(shù)進(jìn)行處理。每個(gè)類中都維護(hù)著一個(gè)消息映射表,保存著該類能夠接受并處理的消息以及和該消息相對(duì)應(yīng)的處理函數(shù)的信息。應(yīng)用程序類、窗口框架類、文檔類和視圖類中都定義了一張消息映射表。當(dāng)發(fā)生一個(gè)消息或事件時(shí),應(yīng)用程序按一定的順序搜索這些類的消息映射表,找到并調(diào)用對(duì)應(yīng)的消息處理函數(shù)。

(三)

消息處理的路徑應(yīng)用程序類窗口框架類文檔類視圖類應(yīng)用程序類、窗口框架類、文檔類和視圖類都可以接受并處理窗口消息。當(dāng)一個(gè)窗口消息例如鼠標(biāo)左鍵按下的消息發(fā)出后,該消息按下列順序處理。

第41頁,共61頁,2023年,2月20日,星期四第四章基于VisualC++的圖形顯示基礎(chǔ)

對(duì)于面向用戶的軟件,用戶主要通過輸入、輸出設(shè)備與計(jì)算機(jī)進(jìn)行人-機(jī)對(duì)話,軟件的可視化操作顯得非常重要。對(duì)軟件在圖形、圖象功能上有很高的要求。

Windows提供了豐富的內(nèi)部函數(shù),稱為API(applicationprogramminginterface),或者叫做Windows應(yīng)用程序編程接口。API中和圖形有關(guān)的部分稱為圖形設(shè)備接口GDI(Graphicsdeviceinterface)。作為一種圖形操作系統(tǒng),Windows把所有的東西都作為圖形在顯示器上進(jìn)行顯示,因此,Windows擁有大量的圖形處理函數(shù),即GDI函數(shù)。GDI負(fù)責(zé)管理與不同輸出設(shè)備的連接,從而使程序開發(fā)者不需要和硬件設(shè)備打交道,直接調(diào)用相關(guān)的函數(shù)即可。

第42頁,共61頁,2023年,2月20日,星期四第一節(jié)GDI基礎(chǔ)知識(shí)重點(diǎn)(1)了解計(jì)算機(jī)圖形顯示的方法(2)理解設(shè)備環(huán)境DC和CDC

(3)學(xué)會(huì)使用筆,刷子,字體等GDI對(duì)象,進(jìn)行繪圖。難點(diǎn)抽象概念較多,通過操作軟件進(jìn)行實(shí)際演示。第43頁,共61頁,2023年,2月20日,星期四第一節(jié)GDI基礎(chǔ)知識(shí)一、DC和CDC1.設(shè)備環(huán)境設(shè)備環(huán)境DC(devicecontext),又稱設(shè)備上下文或設(shè)備描述表,實(shí)際上就是所有繪制圖形方法的集合。在Windows環(huán)境下,所有圖形輸出都是在DC上進(jìn)行的。DC的數(shù)據(jù)結(jié)構(gòu)中存儲(chǔ)了顯示器(或打印機(jī))的性能、屬性的詳細(xì)信息。這些數(shù)據(jù)信息決定了程序如何在顯示器上進(jìn)行顯示。用戶在繪圖之前,必須先獲得繪圖窗口區(qū)域的一個(gè)設(shè)備環(huán)境DC,接著才能進(jìn)行GDI函數(shù)的調(diào)用。2.設(shè)備上下文類

MFC把設(shè)備環(huán)境DC封裝成了設(shè)備上下文類CDC,該類封裝了所有的圖形輸出函數(shù),包括設(shè)備環(huán)境的創(chuàng)建和初始化、畫簡單圖形(畫線、矩形、橢圓)以及復(fù)雜操作(如位圖,區(qū)域操作等)。CDC類的適用范圍很廣,不僅支持窗口,還能支持打印機(jī)。

第44頁,共61頁,2023年,2月20日,星期四3.OnDraw成員函數(shù)

在視圖客戶區(qū)繪圖最常適用的是OnDraw函數(shù),它是Cview類的一個(gè)虛函數(shù),每當(dāng)窗口需要重繪時(shí)調(diào)用該函數(shù)。它的函數(shù)原型如下:

virtualvoidOnDraw(CDC*pDC);

參數(shù)是CDC類的指針,利用該指針就可以調(diào)用CDC類的成員函數(shù)來完成各種圖形繪制工作。4.獲取設(shè)備上下文(DC) 繪圖前必須準(zhǔn)備好設(shè)備上下文(DC),得到一個(gè)CDC類的對(duì)象,然后才能調(diào)用CDC類的成員函數(shù)進(jìn)行繪圖。在MFC應(yīng)用程序中獲得CDC類對(duì)象的方法有兩種,一種是直接接受一個(gè)參數(shù)為指向CDC類對(duì)象的指針。例如CView類中的OnDraw函數(shù)。

第45頁,共61頁,2023年,2月20日,星期四二、繪圖工具GDI對(duì)象CGdiObject CGdiObject類是MFC提供的繪圖工具的類,它的派生類包括畫筆(CPen),畫刷(CBrush),字體(CFont),位圖(CBitmap),調(diào)色板(CPalette)和區(qū)域(CRgn)等。使用GDI對(duì)象有兩個(gè)步驟:(1)定義一個(gè)GDI繪圖對(duì)象的實(shí)例。(2)調(diào)用CDC::SelectObject函數(shù),將它選入到設(shè)備上下文中。

1、CPen畫筆。畫筆用來繪制對(duì)象的邊框以及直線和曲線。用戶可以指定線的顏色及寬度,并且可以指定畫實(shí)線、點(diǎn)線或虛線。默認(rèn)的畫筆畫的是一個(gè)象素寬的黑色實(shí)線。

CPen(intnPenStyle,intnWidth,COLORREFcrColor);nPenStyle是畫筆的風(fēng)格(樣式),即畫筆的線型,該參數(shù)可以為:PS_SOLID創(chuàng)建一個(gè)實(shí)線畫筆。PS_DASH創(chuàng)建一個(gè)虛線畫筆。PS_DOT創(chuàng)建一個(gè)點(diǎn)線畫筆。PS_DASHDOT創(chuàng)建一個(gè)雙點(diǎn)劃線畫筆。

nWidth是畫筆的寬度。

第46頁,共61頁,2023年,2月20日,星期四a.用不同線型繪制直線。for(inti=0;i<4;i++)//使用4種風(fēng)格的畫筆{CPenNewPen(PS_SOLID+i,1,RGB(255,0,0));//不同風(fēng)格的畫筆CPen*pOldPen;pOldPen=pDC->SelectObject(&NewPen);pDC->MoveTo(120,100+30*i);//光標(biāo)移動(dòng)到指定起始位置pDC->LineTo(500,100+30*i);//使用選中的畫筆畫線

pDC->SelectObject(pOldObject);//恢復(fù)原對(duì)象

}b.畫不同粗細(xì)的直線

for(inti=0;i<7;i++){CPenNewPen;NewPen.CreatePen(PS_SOLID,i*2,RGB(0,255,0));CPen*pOldPen;pOldPen=pDC->SelectObject(&NewPen); pDC->MoveTo(120,120+30*i); pDC->LineTo(500,120+30*i); pDC->SelectObject(pOldPen);}第47頁,共61頁,2023年,2月20日,星期四2、CBrush對(duì)象

CBrush類畫刷用來填充一個(gè)封閉圖形對(duì)象(如矩形、橢圓)的內(nèi)部區(qū)域。默認(rèn)的畫刷將封閉圖形的內(nèi)部填充成白色。

CBrush(COLORREFcrColor); 創(chuàng)建一個(gè)實(shí)畫刷,顏色是crColorCBrush(intnIndex,COLORREFcrColor);

創(chuàng)建一個(gè)網(wǎng)格畫刷。NIndex指定了畫刷的網(wǎng)格形式。

HS_BDIAGONAL:

HS_CROSS:

HS_DIAGCROSS:

HS_FDIAGONAL:

HS_HORIZONTAL:

HS_VERTICAL:

第48頁,共61頁,2023年,2月20日,星期四應(yīng)用實(shí)例

a.實(shí)心刷CBrushNewBrush(RGB(0,0,255));CBrush*pOldBrush;pOldBrush=pDC->SelectObject(&NewBrush);pDC->Rectangle(100,100,200,200); pDC->SelectObject(pOldBrush);b.網(wǎng)格刷

CBrushNewBrush;NewBrush.CreateBrush(HS_CROSS,RGB(255,0,0)); CBrush*pOldBrush;pOldBrush=pDC->SelectObject(&NewBrush); pDC->Rectangle(100,100,200,200); pDC->SelectObject(pOldBrush);第49頁,共61頁,2023年,2月20日,星期四3、CFont對(duì)象

字體CFont類是一種具有某種風(fēng)格和尺寸的所有字符的集合,并提供了修改字體的成員函數(shù)。

CFont類構(gòu)造函數(shù)及初始化成員函數(shù)

該類只有一個(gè)構(gòu)造函數(shù)CFont()。初始化函數(shù)BOOLCreateFont(intnHeight,intnWidth,intnEscapement,intnOrientation,intnWeight,BYTEbItalic,BYTEbUnderline,BYTEcStrikeOut,BYTEnCharSet,BYTEnOutPrecision,BYTEnClipPrecision,BYTEnQuality,BYTEnPitchAndFamily,LPCTSTRlpszFacename)

第50頁,共61頁,2023年,2月20日,星期四CFont類對(duì)象應(yīng)用實(shí)例

CFontm_MyFont; m_MyFont.CreateFont(50,0,100,0,FW_BOLD,TRUE,FALSE,0,ANSI_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY,DEFAULT_PITCH|FF_SWISS,"Arial"); CFont*pOldFont; pOldFont=pDC->SelectObject(&m_MyFont); pDC->TextOut(200,200,“字體實(shí)例”); pDC->SelectObject(pOldFont);第51頁,共61頁,2023年,2月20日,星期四第二節(jié)繪制圖形元素重點(diǎn):掌握常用圖形的繪制方法,包括點(diǎn)、矩形、橢圓、多邊形等基本圖形。并上機(jī)進(jìn)行實(shí)際動(dòng)手操作。第52頁,共61頁,2023年,2月20日,星期四圖形元素(簡稱圖元)主要包括點(diǎn)、直線、簡單曲線、復(fù)雜曲線、文字等。這些圖形元素是構(gòu)成復(fù)雜圖形的基礎(chǔ)。1.繪制點(diǎn)、直線和矩形(1)

點(diǎn)的繪制:繪制點(diǎn)的CDC類的成員函數(shù)為SetPixel。函數(shù)聲明為:

COLORREFSetPixel(intx,inty,COLORREFcrColor);

該函數(shù)繪制大小為一個(gè)象素的點(diǎn)。x和y為所繪制點(diǎn)的坐標(biāo);參數(shù)crColor表示繪制點(diǎn)的顏色。

pDC->SetPixel(100,100,RGB(255,255,0));(2)直線的繪制:

CpointMoveTo(intx,inty);//移動(dòng)當(dāng)前點(diǎn)到x和y指定的點(diǎn)。

BOOLLineTo(intx,inty);//從當(dāng)前點(diǎn)向x和y指定的點(diǎn)畫線。每次畫直線都是以當(dāng)前位置為起始點(diǎn)。畫直線結(jié)束后,直線的結(jié)束位置又成為當(dāng)前位置。第53頁,共61頁,2023年,2月20日,星期四(3)

矩形的繪制:矩形的繪制主要是調(diào)用CDC的成員函數(shù)Rectangle。函數(shù)聲明如下:

BOOLRectangle(intx1,inty1,intx2,inty2);

參數(shù)x1,y1,x2,y2分別代表了所要繪制矩形的左上頂點(diǎn)坐標(biāo)值和右下頂點(diǎn)坐標(biāo)值。在矩形繪制前要選好畫筆和畫刷。2.繪制簡單曲線(1)橢圓的繪制。繪制橢圓的函數(shù)為Ellipse。函數(shù)

溫馨提示

  • 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)論