第二計算機圖形系統(tǒng)_第1頁
第二計算機圖形系統(tǒng)_第2頁
第二計算機圖形系統(tǒng)_第3頁
第二計算機圖形系統(tǒng)_第4頁
第二計算機圖形系統(tǒng)_第5頁
已閱讀5頁,還剩81頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第二計算機圖形系統(tǒng)演示文稿現(xiàn)在是1頁\一共有86頁\編輯于星期二(優(yōu)選)第二計算機圖形系統(tǒng)現(xiàn)在是2頁\一共有86頁\編輯于星期二2.1圖形系統(tǒng)2.1.1計算機圖形系統(tǒng)的結(jié)構(gòu)2.1.2計算機圖形系統(tǒng)的基本功能現(xiàn)在是3頁\一共有86頁\編輯于星期二2.1.1計算機圖形系統(tǒng)的結(jié)構(gòu)計算機圖形系統(tǒng)圖形軟件系統(tǒng)圖形硬件系統(tǒng)圖形應(yīng)用軟件圖形支撐軟件圖形應(yīng)用數(shù)據(jù)結(jié)構(gòu)圖形輸入設(shè)備圖形輸出設(shè)備現(xiàn)在是4頁\一共有86頁\編輯于星期二2.1.2計算機圖形系統(tǒng)的基本功能1、處理功能:包含形體設(shè)計、分析,圖形描述,基本幾何元素(點、線、面等)的表示、求交運算、分類、幾何變換,光、色模型的建立和計算,干涉檢測等。2、存儲功能:存儲圖形數(shù)據(jù),包括圖形幾何數(shù)據(jù)、拓撲關(guān)系及屬性信息等。3、交互功能:通過圖形顯示器和圖形輸入設(shè)備實現(xiàn)用戶與圖形系統(tǒng)的人機通信。用戶通過顯示屏幕觀察設(shè)計的圖形,利用交互輸入設(shè)備對圖形進行在線的操作(增加、刪除、修改等)以得到滿意的設(shè)計結(jié)果。4、輸入功能:將圖形的形狀、尺寸等有關(guān)的圖形數(shù)據(jù)和操作命令輸入到計算機中去。5、輸出功能:把所設(shè)計的圖形從計算機中輸出出來,包括顯示輸出和硬拷貝輸出兩種形式。現(xiàn)在是5頁\一共有86頁\編輯于星期二2.2圖形輸入設(shè)備作用:

圖形輸入設(shè)備用于輸入圖形數(shù)據(jù)或圖形操作命令分類:

一般應(yīng)用輸入設(shè)備類:鼠標、鍵盤、光筆等特殊用途的圖形輸入設(shè)備:數(shù)據(jù)手套、觸摸板、圖像掃描儀等現(xiàn)在是6頁\一共有86頁\編輯于星期二2.2.1一般應(yīng)用圖形輸入設(shè)備控制光標移動用來輸入定位坐標或選擇操作的輸入設(shè)備,它將移動距離及方向的信息變成數(shù)字脈沖信息送給計算機,由計算機轉(zhuǎn)換成光標的坐標數(shù)據(jù),從而達到定位目的。分為:機械式和光電式。最基本的輸入設(shè)備,具有ASCII編碼鍵、命令控制鍵和功能鍵,能用來輸入圖形坐標、選擇菜單、選擇圖形功能等。1、鍵盤2、鼠標現(xiàn)在是7頁\一共有86頁\編輯于星期二光筆是一種檢測裝置,是“能檢測出光的筆”。它靠檢測熒光屏上的發(fā)光點來選擇屏幕的位置坐標。3、光筆(LigtPen)光筆的基本功能:定位、拾取和筆劃跟蹤。拾取是選中顯示器上已顯示的圖形或文字。筆劃跟蹤是用光筆拖動光標實現(xiàn)定位現(xiàn)在是8頁\一共有86頁\編輯于星期二①游戲桿:是有一根手柄的可搖動裝置。手柄通過一個球形軸承半固定在底座上,在手柄運動時帶動一對電位器或電脈沖產(chǎn)生器產(chǎn)生信號,控制屏幕上的光標的運動。②跟蹤球:跟蹤球是一個球,可用手掌或掌心旋轉(zhuǎn)使屏幕光標移動。附加的電位計量器用來測量球的旋轉(zhuǎn)量和方向。4、游戲桿(JoyStick)和跟蹤球現(xiàn)在是9頁\一共有86頁\編輯于星期二觸摸屏是允許用手指觸摸的方式選擇顯示屏幕位置的顯示器。根據(jù)觸點記錄方式將觸摸屏分為光學的、電子的和聲學。5、觸摸屏(TouchScreen)現(xiàn)在是10頁\一共有86頁\編輯于星期二2.2.2特殊應(yīng)用圖形輸入設(shè)備特殊應(yīng)用圖形輸入設(shè)備是指那些用于專門目的的圖形輸入專門設(shè)備。這里僅介紹數(shù)字化儀、圖象掃描儀、數(shù)碼相機。現(xiàn)在是11頁\一共有86頁\編輯于星期二又稱繪圖板,是用來給物體作畫、著色或交互選擇坐標位置的常用設(shè)備。這些設(shè)備可輸入兩維或三維空間的坐標。通常,數(shù)字化儀在所繪制的圖或?qū)ο笊蠏呙瑁⑤斎胍唤M隨機的坐標位置,相互之間以直線段連接,以逼近曲線或表面形狀。標準的數(shù)字化儀有兩個主要部分:(1)堅固的、內(nèi)部布滿金屬柵格的圖板;(2)提供位置信息的定位器。1、數(shù)字化儀(Digitizer)現(xiàn)在是12頁\一共有86頁\編輯于星期二掃描儀是一種圖像輸入設(shè)備,是直接把圖形(工程圖紙)和圖像(照片、廣告等)掃描輸入到計算機中并以圖像形式存儲表示的設(shè)備。按掃描儀所支持的顏色可分為單色掃描儀和彩色掃描儀;按其所采用的固態(tài)器件又可分為電荷耦合器件(CCD)掃描儀、MOS電路掃描儀和緊貼型掃描儀;按掃描寬度和操作方式可以分為大型掃描儀、臺式掃描儀和手持式掃描儀。掃描儀的兩個重要指標是分辨率和支持的顏色數(shù)或灰度等級,如分辨率為1200dpi(dotsperinch),顏色為32位真彩色?,F(xiàn)在大多掃描儀都提供分辨率和顏色、灰度的選擇功能。2、圖象掃描儀(ImageScanner)現(xiàn)在是13頁\一共有86頁\編輯于星期二數(shù)碼相機是專門用來獲取數(shù)字化圖像的照相機。雖然它從外觀上看很像一架普通的光學照相機,但內(nèi)部結(jié)構(gòu)卻大不相同。數(shù)碼相機利用電耦合器件成像,圖像存儲在半導體器件上。數(shù)碼相機作為計算機的輸入設(shè)備,將存儲在半導體器件上的圖像輸入到計算機中,并利用相應(yīng)的軟件進行編輯處理,可用彩色打印機打印輸出。3、數(shù)碼相機(DigitalCamera)現(xiàn)在是14頁\一共有86頁\編輯于星期二2.3圖形繪制設(shè)備圖形輸出包括圖形顯示和圖形繪制。圖形繪制通常指把圖形畫在紙上,也稱硬拷貝。繪圖儀和打印機是兩種最常用的硬拷貝設(shè)備。現(xiàn)在是15頁\一共有86頁\編輯于星期二2.3.1繪圖儀繪圖儀分筆式繪圖儀和噴墨式繪圖儀兩種。噴墨式繪圖儀的工作原理是利用電脈沖控制噴墨頭,由噴墨頭上的噴嘴把墨滴噴到圖紙上而形成圖形。筆式繪圖儀又分為滾筒式繪圖儀和平板式繪圖儀兩種。滾筒式繪圖儀是把有孔的繪圖紙卷在有突針的滾筒上,機架靜止,筆在托架上運動,繪圖紙在滾輪上沿托架前后移動,從而繪制出圖形。繪圖紙和繪圖工具筆的運動是由兩只步進電機帶動,通過控制兩只步進電機進行繪圖。繪圖工具可以是筆,也可以是彩色噴墨頭。滾筒式繪圖儀一般結(jié)構(gòu)較簡單、價格較低,但精度和速度不高。平板式繪圖儀有一塊繪圖平板,圖紙平鋪在繪圖平板上,橫梁和筆架運動。這種繪圖儀精度高、速度快、但價格也較高。繪圖筆的運動有六種基本動作:+X、-X、+Y、-Y四個方向上的移動和抬筆、落筆。因此,任何繪圖路線都只能由這四個方向的基本運動組成?,F(xiàn)在是16頁\一共有86頁\編輯于星期二2.3.2打印機打印機可用來輸出文本、數(shù)據(jù)和圖形。目前常用的打印機主要有針式打印機、噴墨打印機和激光打印機?,F(xiàn)在是17頁\一共有86頁\編輯于星期二1、針式打印機針式打印機的打印機頭上裝有一組打印鋼針,在打印機和打印頭之間裝有色帶,通過選擇打出的某些鋼針撞擊色帶和紙將點陣圖案印在紙上。打印時打印頭從左至右移動來打印一行,當打完一行后打印紙以一定的行距向前移動,以便打印下一行。這種打印機因機器本身和耗材的價格便宜而被普遍使用,但作為圖形輸出設(shè)備時因其輸出精度太低致使圖形質(zhì)量很差。現(xiàn)在是18頁\一共有86頁\編輯于星期二2、噴墨打印機噴墨打印機的基本原理是通過噴墨頭在打印紙上橫向移動時將小墨點噴射到打印紙上來形成圖案的。墨水泵將黃、品紅、青3種顏色的墨水分別注入3支很細的噴筆中,在高壓下,墨水通過噴筆內(nèi)細而長的玻璃毛細管噴到紙上。噴墨打印機因其價格較激光打印機便宜,使用彩色墨盒的彩噴可打印彩色圖形,所以是較理想的圖形打印設(shè)備,但速度較慢且耗財昂貴?,F(xiàn)在是19頁\一共有86頁\編輯于星期二3、激光打印機激光打印機的基本原理:用激光束在光敏鼓上掃描,通過控制激光束的開關(guān)來控制光敏鼓是否吸附碳粉。當光敏鼓在紙上滾動時,便能在紙上輸出圖形等信息。激光打印機有效地利用了激光的定向性、單色性和能量密集性,結(jié)合電子掃描技術(shù)的高靈敏度和快速存取等特性,使輸出圖形圖像的質(zhì)量非常高,是理想的圖形輸出設(shè)備。激光打印機正朝著高速度、高精度、低噪音、彩色化的方向發(fā)展。現(xiàn)在是20頁\一共有86頁\編輯于星期二2.4圖形顯示系統(tǒng)圖形顯示指的是在顯示器屏幕上輸出圖形,顯示器通過顯示卡接到系統(tǒng)總線上,顯示器和顯示卡共同構(gòu)成了顯示系統(tǒng)?,F(xiàn)在是21頁\一共有86頁\編輯于星期二2.4.1顯示器顯示器是顯示圖形的設(shè)備。根據(jù)顯示器外形可將其分為兩種類型:陰極射線管式(CRT)顯示器和平板顯示器(液晶顯示器、等離子顯示器、激光顯示器等)。在應(yīng)用中,以前是以CRT顯示器為主;目前,由于液晶顯示器價格的大幅降低,使用日漸增多,大有取代CRT顯示器的趨勢。現(xiàn)在是22頁\一共有86頁\編輯于星期二1、陰極射線管(CRT)陰極射線管(CRT,CathodeRayTube)是CRT顯示器的主要組成部分。根據(jù)陰極射線管的可顯示顏色數(shù)可分為單色陰極射線管和彩色陰極射線管兩種?,F(xiàn)在是23頁\一共有86頁\編輯于星期二(1)單色陰極射線管CRT是一種真空器件,利用電磁場產(chǎn)生高速的、經(jīng)過聚焦的電子束,偏轉(zhuǎn)到屏幕的不同位置轟擊屏幕表面的熒光材料而產(chǎn)生可見圖形。現(xiàn)在是24頁\一共有86頁\編輯于星期二陰極射線管的各組成部分及其功能:電燈絲:通電后變熱以給陰極加熱。陰極:由燈絲加熱后釋放自由電子,在其周圍形成電子云??刂茤牛杭由县撾妷汉螅軌蚩刂仆ㄟ^其中小孔的帶負電的電子束的強弱。通過調(diào)節(jié)負電壓高低來控制電子數(shù)量,來控制熒光屏上相應(yīng)點的亮度。聚焦系統(tǒng):保證電子束在轟擊屏幕時,匯聚成很細的點。加速電極:對電子束加速,用于產(chǎn)生高速電子束。偏轉(zhuǎn)系統(tǒng):控制電子束的偏轉(zhuǎn)路徑,以轟擊屏幕的特定位置。屏幕:內(nèi)壁涂有熒光粉,常稱作熒光屏,是CRT顯示圖形的表面?,F(xiàn)在是25頁\一共有86頁\編輯于星期二(2)彩色陰極射線管如果顯示屏上只涂一種熒光粉,則只能發(fā)出一種光色,這種顯示器稱作單色顯示器,色彩單調(diào)。彩色顯示器利用能發(fā)出不同光色的熒光粉的光色組合來顯示彩色圖形。最常用的CRT彩色顯示器采用的是蔭罩式彩色顯像管?,F(xiàn)在是26頁\一共有86頁\編輯于星期二根據(jù)影孔板孔的形狀可將影孔板分為三類:①點狀影孔板:大多數(shù)球面與柱面顯像管采用此類影孔板。由于太多電子無法穿過蔭罩孔而直接打在蔭罩上,導致長時間工作后,蔭罩容易出現(xiàn)過熱導致變形,影響屏幕的局部色純。但其抗震性好。②柵格式影孔板:這種并行排列的方式容易對齊,調(diào)出的顏色也較鮮艷,常用于高分辨率的彩色CRT顯示器。如,Sony的Trinitron與Mitsubishi的Diamondtron顯像管采用此類影孔板。③溝槽式影孔板:長形板孔在保證蔭罩強度的前提下,提高了電子透過率。LG的Flatron顯像管采用此類影孔板。(a)點狀影孔板(b)柵格式影孔板(c)溝槽式影孔板現(xiàn)在是27頁\一共有86頁\編輯于星期二2、CRT圖形顯示器按其掃描方式,CRT顯示器可分為隨機掃描顯示器(又稱矢量顯示器)、直視存儲管圖形顯示器和光柵掃描式顯示器三種。它們的原理不同,可顯示的圖形種類不同,因此用途也不同?,F(xiàn)在是28頁\一共有86頁\編輯于星期二(1)隨機掃描的圖形顯示器隨機掃描圖形顯示器,又稱向量(vector)顯示器、筆劃(Strokewriting)顯示器,是畫線設(shè)備,其特點是電子束可隨意移動,只掃描熒屏上要顯示的部分。優(yōu)點:掃描速度快,分辨率高,線條質(zhì)量好,易修改,交互性好,動態(tài)性能好。缺點:價格貴;只能顯示線框圖形,并不能顯示逼真的有陰影場景。應(yīng)用領(lǐng)域:主要應(yīng)用于軍事、CAD領(lǐng)域?,F(xiàn)在是29頁\一共有86頁\編輯于星期二(2)直視存儲管圖形顯示器直視存儲管DVST(direct-viewstoragetube)通過緊貼在屏幕熒光層后的電荷分布(存儲柵)來存儲圖形信息。從表面上看直視存儲管的特性極象一個有長余輝的熒光屏,一條線一旦畫在屏幕上,在一小時之內(nèi)都將是可見的。

DVST的特點有:無需刷新,很復(fù)雜的圖形也可以在極高的分辨率下無閃爍地顯示,成本較低;不能顯示彩色,不能局部修改,擦除和重畫過程對復(fù)雜圖形來講可能需要幾秒鐘。現(xiàn)在是30頁\一共有86頁\編輯于星期二(3)光柵掃描式顯示器目前使用最廣泛的CRT顯示器是基于電視技術(shù)的光柵掃描式顯示器。在光柵掃描系統(tǒng)中,電子束橫向掃描屏幕,一次一行,從頂?shù)降醉槾芜M行。當電子束橫向沿一行移動時,電子束的強度不斷變化來建立亮點的圖案?,F(xiàn)在是31頁\一共有86頁\編輯于星期二關(guān)于光柵掃描的幾個概念如下:幀:電子束從左到右、自頂至底掃描一遍,對應(yīng)于一幀。水平回掃:每條掃描線末端,電子束返回到屏幕的左端,稱為電子束的水平回掃。回掃時關(guān)閉電子槍。垂直回掃:在每幀的終了,電子束返回到屏幕的左上角,稱為電子束的垂直回掃。回掃時關(guān)閉電子槍。行頻、幀頻:水平掃描頻率為行頻,垂直掃描頻率為幀頻。掃描方式:有逐行掃描和隔行掃描。逐行掃描是從屏幕頂端開始,逐行下掃,直到屏幕底部。隔行掃描是先掃偶數(shù)行掃描線,再掃奇數(shù)行掃描線。隔行掃描技術(shù)主要用于刷新速率較慢的顯示器中,以避免閃爍。刷新速率:以多少周期/秒或赫茲/秒為單位來描述。一個周期對應(yīng)一幀。如每秒60幀的刷新速率為60Hz/s。采用一定速率的刷新來保持屏幕顯示的圖形穩(wěn)定。現(xiàn)在是32頁\一共有86頁\編輯于星期二3、液晶顯示器LCD(LiquidCrystalDisplay)由于CRT顯示器體積大、重量重、耗電量高、產(chǎn)生輻射與電磁波干擾等缺點,而液晶顯示器能克服這些不足,應(yīng)用日益廣泛,前景十分廣闊。液晶顯示器是基于液晶電光效應(yīng)的顯示器件。液晶是一種介于液體和固體之間的具有規(guī)則性分子排列的有機化合物,分子形狀為細長棒形,長寬約1nm~10nm。在不同電流電場作用下,液晶分子會做規(guī)則旋轉(zhuǎn)90度排列,產(chǎn)生透光度的差別,如此在電源ON/OFF下產(chǎn)生明暗的區(qū)別。依此原理控制每個像素,便可構(gòu)成所需圖像?,F(xiàn)在是33頁\一共有86頁\編輯于星期二液晶顯示器由六層薄板組成:第一層是垂直偏光板,第二層是鍍在石英平面上的垂直網(wǎng)格線板,第三層是液晶層,第四層是水平網(wǎng)格線板,第五層是水平偏光板,第六層是反射層。在不加電場的情況下,入射光經(jīng)過偏光板后通過液晶層,偏光被分子扭轉(zhuǎn)排列的液晶層旋轉(zhuǎn)90度。在離開液晶層時,其偏光方向恰與另一偏光板的方向一致,所以光線能順利通過,使電極面呈光亮。當加入電場的情況時,每個液晶分子的光軸轉(zhuǎn)向與電場方向一致。液晶層也因此失去了旋光的能力,結(jié)果來自入射偏光板的偏光,其方向與另一偏光板的偏光方向成垂直的關(guān)系,并無法通過,這樣電極面就呈現(xiàn)黑暗的狀態(tài)。液晶層中的水晶液滴都被包含在細小的單元格結(jié)構(gòu)中,一個或多個單元格構(gòu)成屏幕上的一個像素。顯示圖像時,通過對顯示信號的AD轉(zhuǎn)換,計算出各像素的通斷狀態(tài)后,直接把信號驅(qū)動具體像素,控制該液晶像素對光線的"通斷",就可以在屏幕上生成圖像。反射層水平偏光板水平網(wǎng)格線液晶層垂直網(wǎng)格線垂直偏光板圖2.18液晶顯示器的六層結(jié)構(gòu)現(xiàn)在是34頁\一共有86頁\編輯于星期二液晶顯示器具有如下優(yōu)點:①體積小,重量輕;②功耗低(數(shù)十uW/cm

以下),散熱??;③精確還原畫面,文字銳利;④畫面不閃爍;⑤幅射?。虎奁聊徽{(diào)節(jié)簡單方便。目前,LCD顯示器圖像質(zhì)量還不夠完善,色彩表現(xiàn)和飽和度不及CRT顯示器,而且響應(yīng)時間也比CRT顯示器長,當畫面更新速度快而劇烈時,畫面延遲會產(chǎn)生重影、脫尾等現(xiàn)象。現(xiàn)在是35頁\一共有86頁\編輯于星期二2.4.2相關(guān)概念(1)分辨率(2)象素與幀緩存(3)顏色查找表(4)屏幕坐標系現(xiàn)在是36頁\一共有86頁\編輯于星期二(1)分辨率(Resolution)光點是指電子束打在顯示器的熒光屏上能夠顯示的最小發(fā)光點,一般用直徑來表明光點的大小。在當前的圖形顯示模式下,屏幕上可以控制的可顯示的最小單元,被稱作像素點

(pixel),它是組成圖形的基本元素。圖形顯示系統(tǒng)中的三種分辨率概念:①屏幕分辨率,也稱為光柵分辨率或物理分辨率,是指CRT顯示器顯示系統(tǒng)能夠顯示的最大光點數(shù),通常用水平方向上的光點數(shù)與垂直方向上的光點數(shù)的乘積來表示。②顯示分辨率:是顯示控制器所能提供的顯示模式分辨率。顯示系統(tǒng)的顯示模式分為文本模式和圖形模式。對于文本顯示方式,顯示分辨率用水平和垂直方向上所能顯示的字符總數(shù)的乘積表示。對于圖形顯示方式,顯示分辨率是指屏幕上所包含像素的個數(shù),通常用水平和垂直方向上所能顯示的象素點總數(shù)的乘積表示。③存儲分辨率:是指幀緩沖區(qū)的大小,一般用緩沖區(qū)的字節(jié)數(shù)表示。存儲分辨率不僅與顯示分辨率有關(guān),還與象素點的色彩有關(guān)。幀緩存的容量等于顯示分辨率乘上每個像素對應(yīng)的字節(jié)數(shù)。三種分辨率的概念既有區(qū)別又有聯(lián)系,對圖形的顯示都會產(chǎn)生一定的影響。屏幕分辨率決定了所能顯示的最高分辨率;顯示分辨率和存儲分辨率對所能顯示的圖形也有控制作用?,F(xiàn)在是37頁\一共有86頁\編輯于星期二(2)象素與幀緩存屏幕上一個象素點具有顏色、灰度等屬性,它們存儲在幀緩存中,所以,象素點對應(yīng)幀緩存中的一組信息,其對應(yīng)技術(shù)有組合象素法(PackedPixelMethod)和顏色位面法(ColorPlaneMethod)。幀緩沖存儲器CRT光柵電子槍寄存器1DAC現(xiàn)在是38頁\一共有86頁\編輯于星期二現(xiàn)在是39頁\一共有86頁\編輯于星期二當屏幕分辨率為1024×1024,每個象素24位(以真彩色顯示)時,幀緩存的容量需要:1024×1024×24/8=3M字節(jié)現(xiàn)在是40頁\一共有86頁\編輯于星期二(3)顏色查找表現(xiàn)在是41頁\一共有86頁\編輯于星期二(4)屏幕坐標系屏幕是顯示圖形的場所,為了進行定位,在屏幕上定義了一個屏幕坐標系。它給出了第一象限的一個平面區(qū)域0≤x≤Xmax,0≤y≤Ymax(分辨率為(Xmax+1)*(Ymax+1))。坐標值是正整數(shù),一對(X,Y)坐標對應(yīng)一個像素點。注意有些顯示器的屏幕坐標系的Y軸方向向上而有的向下。圖2.23兩種屏幕坐標系現(xiàn)在是42頁\一共有86頁\編輯于星期二2.5圖形軟件標準圖形標準是指系統(tǒng)中各界面之間進行數(shù)據(jù)交換的接口標準、語言連接規(guī)范和應(yīng)用程序接口API標準等。圖形標準的制定是為了在不同的計算機系統(tǒng)和圖形設(shè)備之間進行圖形應(yīng)用軟件的移植。隨著計算機圖形學應(yīng)用領(lǐng)域的不斷擴大,各種圖形軟件日益增多,圖形輸入輸出設(shè)備也是種類繁多。如果沒有一些軟件標準,對應(yīng)用軟件的開發(fā)和移植等工作將造成困難。20世紀50年代到70年代初,人們要求圖形軟件想著通用、高級、與設(shè)備無關(guān)的方向發(fā)展,導致了計算機圖形標準的出現(xiàn)。圖形標準的研究和制定于20世紀70年代初開始,在80年代進入了大發(fā)展時期。1985年,第一個國際計算機圖形信息標準及計算機圖形核心系統(tǒng)(GKS)正式頒布。之后,三維圖形核心系統(tǒng)(GKS-3D)、程序員層次交互式圖形系統(tǒng)(PHIGS)、計算機圖形原文件(CGM)、計算機圖形接口(CGI)、初始圖形交換規(guī)范(IGES)以及產(chǎn)品數(shù)據(jù)交換標準(STEP)等相繼制訂并頒布。除了由官方標準化組織發(fā)布的圖形標準外,還有一些被工業(yè)界使用的已經(jīng)成為事實上的標準,比較著名的有SGI等公司的OpenGL,微軟公司的DirectX等。計算機圖形標準的研究和發(fā)展,進一步推動了計算機圖形學及其應(yīng)用技術(shù)的發(fā)展。本節(jié)將介紹GKS標準、CGM標準、CGI標準、IGES標準、DXF標準、STEP標準、OpenGL標準?,F(xiàn)在是43頁\一共有86頁\編輯于星期二1、GKS標準圖形核心系統(tǒng)GKS(GraphicalKernelSystem)是由德國工業(yè)標準化組織協(xié)會提出的并被許多國家采納、引用的第一個圖形軟件國際標準。它是一個子程序軟件包,提供了各種物理的圖形輸入輸出設(shè)備和應(yīng)用軟件之間的接口。用戶通過應(yīng)用程序調(diào)用GKS的功能子程序便可方便的進行圖形的輸入、輸出、變換、組合、裝配等交互設(shè)計操作。GKS獨立與設(shè)備和高級語言。它免除了繪圖設(shè)計和顯示指令的繁瑣工作,也不需要詳細了解各種圖形的輸入輸出設(shè)備的控制功能,減輕了設(shè)計人員的許多重復(fù)性工作。由于GKS使應(yīng)用軟件只與抽象的邏輯設(shè)備打交道,略去了物理設(shè)備的個性,為應(yīng)用軟件的移植提供了極大的方便,從而使開發(fā)的軟件具有了設(shè)備無關(guān)性。為便于應(yīng)用,GKS提供了與各種流行高級語言的接口,并作為獨立于高級語言的通用軟件為開發(fā)各種應(yīng)用圖形軟件服務(wù)。GKS是針對二維圖形應(yīng)用的,為滿足三維圖形應(yīng)用的需求,在此基礎(chǔ)上又制定了GKS-3D。GKS-3D具有三維圖素、填充區(qū)域圖素集、具有視圖操作的三維變換、三維輸入、消隱處理、邊界屬性和三維幾何屬性等功能。GKS-3D是一個完全的三維圖形系統(tǒng),并與GKS(2D)兼容。GKS的應(yīng)用領(lǐng)域十分廣泛,包括科學技術(shù)和商業(yè)圖形的生成、支持地圖學、過程控制和CAX等領(lǐng)域的應(yīng)用。現(xiàn)在是44頁\一共有86頁\編輯于星期二2、CGM標準計算機圖形元文件CGM(ComputerGraphicMetafile)規(guī)定了生成與設(shè)備無關(guān)的圖形定義、存取和傳遞圖形數(shù)據(jù)的格式。它提供了把不同圖形系統(tǒng)所產(chǎn)生的圖形集成到一起的一種手段,適用于各種設(shè)備和應(yīng)用程序。CGM標準是由一套標準的與設(shè)備無關(guān)的定義圖形的語法和詞法元素組成。它分為兩部分,第一部分是功能描述,包括元素標志符、語義的說明及參數(shù)描述,以抽象的詞法描述了相應(yīng)的文件格式;第二部分描述了3種標準元文件編碼形式,即字符、二進制數(shù)和正文編碼。CGM標準元文件本身并不提供元文件生成和解釋的具體方法,而利用上述三種不同的標準數(shù)據(jù)編碼形式來實現(xiàn)元文件的元素功能?,F(xiàn)在是45頁\一共有86頁\編輯于星期二

3、CGI標準計算機圖形接口CGI(ComputerGraphicsInterface)是ISOTC97組提出的圖形設(shè)備標準。CGI是第一個針對圖形設(shè)備接口,而不是應(yīng)用程序接口的交互式計算機圖形標準。CGI的目標是使應(yīng)用程序和圖形庫直接與各種不同的圖形設(shè)備相作用,使其在各種圖形設(shè)備上不經(jīng)修改就可以運行,即在用戶程序和虛擬設(shè)備之間以一種獨立于設(shè)備的方式提供圖形信息的描述和通信。CGI規(guī)定了發(fā)送圖形數(shù)據(jù)到設(shè)備的輸出和控制功能,從圖形設(shè)備接收圖形數(shù)據(jù)的輸入、查詢和控制功能,因CGI是設(shè)備級接口,對出錯處理和調(diào)試只提供了最小支持。CGI提供的功能集包括控制功能集、獨立于設(shè)備的圖形對象輸出功能集、圖段功能集、輸入和應(yīng)答功能集以及產(chǎn)生、修改、檢索和顯示以象素數(shù)據(jù)形式存儲的光柵功能集。在二維圖形設(shè)備中可以找到CGI支持的功能,但沒有一個圖形設(shè)備包含由CGI定義的所有功能,從這個意義上說,CGI定義了與虛擬設(shè)備的接口?,F(xiàn)在是46頁\一共有86頁\編輯于星期二4、IGES標準基本圖形交換規(guī)范IGES(InitialGraphicsExchangeSpecification)是CAD/CAM應(yīng)用最廣泛的數(shù)據(jù)交換標準。它于1980年由美國國家標準局(NBS)主持成立由波音公司和通用電氣公司參加的技術(shù)委員會制訂,并于1981年正式成為美國的國家標準。它適用于CAD/CAM系統(tǒng)間或同一CAD/CAM系統(tǒng)內(nèi)部不同模塊間的圖形信息交換。IGES文件由五或六個段組成:標志(flag)段、開始(start)段、全局(global)段、元素索引(directoryentry)段、參數(shù)數(shù)據(jù)(paramterdata)段、結(jié)束(terminate)段組成。其中,標志段僅出現(xiàn)在二進制或壓縮的ASCII文件格式中。在IGES文件中表示信息的基本單位是元素,IGES定義了五類元素:曲線和曲面幾何元素、構(gòu)造實體幾何CSG元素、邊界B-Rep實體元素、標注元素和結(jié)構(gòu)元素。各商用CAD系統(tǒng)幾乎都提供了IGES文件前、后置處理程序,實現(xiàn)將傳送來的數(shù)據(jù)格式轉(zhuǎn)換為IGES文件格式,把IGES文件格式轉(zhuǎn)換為CAD系統(tǒng)內(nèi)部的數(shù)據(jù)格式?,F(xiàn)在是47頁\一共有86頁\編輯于星期二5、DXF標準數(shù)據(jù)交換格式DXF(DrawingExchangeFile)是Autodesk公司首先用于描述AutoCAD圖形的文件。每個CAD系統(tǒng)都有自己的數(shù)據(jù)文件,數(shù)據(jù)文件分圖形數(shù)據(jù)文件、幾何模型文件和產(chǎn)品模型文件幾種。數(shù)據(jù)文件的格式與每個CAD系統(tǒng)自己的內(nèi)部數(shù)據(jù)模式密切相關(guān),而每個CAD系統(tǒng)自己內(nèi)部的數(shù)據(jù)模式一般是不公開的,也是各不相同的。由于用戶使用的需要,就有數(shù)據(jù)交換文件概念的出現(xiàn)。一個完整的DXF文件是由四個段和一個文件結(jié)尾組成的。其順序如下:(1)標題段,記錄AutoCAD系統(tǒng)的所有標題變量的當前值或當前狀態(tài)。這些標題變量記錄了AutoCAD系統(tǒng)的當前工作環(huán)境。例如,AutoCAD版本號、插入基點、繪圖界限、SNAP捕捉的當前狀態(tài)、柵格間距、式樣、當前圖層名、當前線型和當前顏色等;(2)表段,包含了四個表,每個表又包含可變數(shù)目的表項。按照這些表在文件中出現(xiàn)的順序,它們依次為線型表、圖層表、字樣表和視圖表;(3)塊段,記錄定義每一塊時的塊名、當前圖層名、塊的種類、塊的插入基點及組成該塊的所有成員。塊的種類分為圖形塊、帶有屬性的塊和無名塊三種。無名塊包括用HATCH命令生成的剖面線和用DIM命令完成的尺寸標注;(4)元素段,記錄了每個幾何元素的名稱、所在圖層的名稱、線型名、顏色號、基面高度、厚度以及有關(guān)幾何數(shù)據(jù);(5)文件結(jié)束,標識文件結(jié)束。DXF為AutoCAD系統(tǒng)的圖形數(shù)據(jù)文件,是具有專門格式的ASCII碼文本文件。AutoCAD可以用DXFFOUT命令生成它,也或以用DXFIN命令讀入它,許多CAD系統(tǒng)具有輸入和輸出該文件的功能。DXF雖然不是標準,但已成為事實上的數(shù)據(jù)交換標準?,F(xiàn)在是48頁\一共有86頁\編輯于星期二6、產(chǎn)品數(shù)據(jù)表達與交換標準STEP產(chǎn)品數(shù)據(jù)表達與交換標準STEP(StandardforTheExchangeofProductmodeldata)是為了克服IGES存在的文件太長及有些數(shù)據(jù)不能表達等問題而開發(fā)的,是一個關(guān)于產(chǎn)品數(shù)據(jù)計算機可理解的表示和交換的國際標準,目的是提供一種不依賴于具體系統(tǒng)的中性機制,能夠描述產(chǎn)品整個生命周期中的產(chǎn)品數(shù)據(jù)。產(chǎn)品生命周期包括產(chǎn)品的設(shè)計、制造、使用、維護、報廢等。產(chǎn)品在各過程產(chǎn)生的信息既多又復(fù)雜,而且分散在不同的部門和地方。這就要求這些產(chǎn)品信息以計算機能理解的形式表示,而且在不同的計算機系統(tǒng)之間進行交換時保持一致和完整。產(chǎn)品數(shù)據(jù)的表達和交換,構(gòu)成了STEP標準,STEP把產(chǎn)品信息的表達和用于數(shù)據(jù)交換的實現(xiàn)方法區(qū)分開來?,F(xiàn)在是49頁\一共有86頁\編輯于星期二7、OpenGL標準OpenGL(OpenGrepgicsLibrary)是在SGI等多家世界聞名的計算機公司的倡導下制定的一個通用共享的開放式的三維圖形標準。它提供了一個標準的計算機圖形學所使用的數(shù)學模型到顯示的接口,并獨立于硬件設(shè)備和操作系統(tǒng)。以它為基礎(chǔ)開發(fā)的應(yīng)用程序,可以運行于當前各種流行的操作系統(tǒng)并可方便地在各平臺間移植。從個人機到工作站及超級計算機,利用它都能實現(xiàn)高性能的三維圖形功能。由于OpenGL具有高度的可充用性和靈活性,它已經(jīng)成為高性能圖形和交互式視景處理的工業(yè)標準,廣泛應(yīng)用于軍事、CAD/CAM/CAE、電視廣播、娛樂、藝術(shù)造型、醫(yī)療影像、虛擬世界等方面。OpenGL的核心庫包括一百多個用于三維圖形操作的函數(shù),除了提供基本的點、線和多邊形的繪制函數(shù)外,還提供了復(fù)雜的三維物體以及復(fù)雜曲線和曲面的繪制函數(shù),主要負責處理對象的外形描述、幾何變換和投影變換、繪制三維物體、光照和材質(zhì)設(shè)置、顏色模式設(shè)置、著色、位圖顯示與圖像增強、紋理映射、動畫制作、交互操作等三維圖形圖像操作?,F(xiàn)在是50頁\一共有86頁\編輯于星期二2.6VisualC++的圖形程序開發(fā)方法Windows提供了豐富的內(nèi)部函數(shù),稱為API(ApplicationProgrammingInterface),其中的圖形設(shè)備接口GDI(GraphicsDeviceInterface)是用于處理圖形函數(shù)調(diào)用和驅(qū)動繪圖設(shè)備的動態(tài)鏈接庫。Windows應(yīng)用程序就是通過使用GDI進行圖形編程的。為實現(xiàn)設(shè)備無關(guān)性,GDI定義了設(shè)備環(huán)境(又稱設(shè)備上下文)。用戶繪制屏幕時需通過設(shè)備環(huán)境DC間接實現(xiàn)。VisualC++的MFC封裝了許多與設(shè)備環(huán)境相關(guān)的類,通過這些類可使用戶很容易地對DC進行處理。這些類不僅包含DC自身,而且還有字體、畫筆、畫刷等繪圖工具。總體來說,圖形編程就是通過調(diào)用Windows自帶的GDI函數(shù)庫中的函數(shù)和對DC進行操作,來完成繪制任務(wù)的?,F(xiàn)在是51頁\一共有86頁\編輯于星期二2.6.1圖形設(shè)備接口GDI

1、圖形設(shè)備接口GDIGDI接受Windows應(yīng)用程序的繪圖請求(表現(xiàn)為GDI函數(shù)調(diào)用),并將它們傳給相應(yīng)的設(shè)備驅(qū)動程序,完成特定硬件的輸出,如打印機打印和屏幕顯示。GDI負責Windows的所有圖形輸出。Windows圖形編程主要是調(diào)用GDI中的相關(guān)函數(shù)并通過獲取DC的“狀態(tài)”,以確定圖形的顏色、尺寸等屬性。應(yīng)用程序使用GDI可創(chuàng)建三種類型的圖形輸出:矢量輸出、光柵圖形輸出和文本輸出。通過GDI可以實現(xiàn)對圖形的顏色、線條的粗細等屬性的控制。通過調(diào)用這些GDI函數(shù)操作硬件,可實現(xiàn)設(shè)備無關(guān)性?,F(xiàn)在是52頁\一共有86頁\編輯于星期二2、設(shè)備上下文DCWindows不允許直接操作顯示輸出設(shè)備,而是通過一個抽象層與設(shè)備上下文進行通訊。設(shè)備上下文DC(DeviceContext,又稱設(shè)備環(huán)境,也稱設(shè)備描述表)實際上就是一個關(guān)于如何繪制圖形方法的集合,它不僅可以繪制各種圖形,而且還可以確定在應(yīng)用窗口中繪制圖形的方式,即確定繪圖模式和映射模式。DC的數(shù)據(jù)結(jié)構(gòu)存儲了顯示器(或打印機)的性能、屬性之類的詳細信息,這些數(shù)據(jù)信息決定程序如何在顯示器上進行顯示。在Windows環(huán)境下,所有圖形輸出都是在DC上進行的。圖形和輸出類封裝了設(shè)備環(huán)境和繪圖工具,用來支持各種圖形設(shè)備環(huán)境。用戶在繪圖之前,必須獲取繪圖窗口區(qū)域的一個設(shè)備環(huán)境DC,然后才能進行GDI函數(shù)的調(diào)用,以執(zhí)行適合于設(shè)備環(huán)境DC的命令。

另外,應(yīng)該注意的是,Windows的設(shè)備環(huán)境是GDI的關(guān)鍵元素,它代表了不同的物理設(shè)備?,F(xiàn)在是53頁\一共有86頁\編輯于星期二3、CDC類

CDC是設(shè)備上下文的基類,包含了繪圖所需要的所有成員函數(shù)(包括部分虛函數(shù)).在MFC中,提出這些派生類的目的就是為了在不同的顯示設(shè)備上進行顯示。現(xiàn)在是54頁\一共有86頁\編輯于星期二函數(shù)說明Arc()繪制橢圓弧BitBlt()把位圖從一個DC拷貝到另一個DCDraw3dRect()繪制三維矩形DrawDragRect()繪制用鼠標拖拽的矩形DrawEdge()繪制矩形的邊緣DrawIcan()繪制圖標Ellipse()繪制橢圓FillRect()用給定畫刷的顏色填充矩形FillRgn()用給定畫刷的顏色填充區(qū)域GetBkColor()獲取背景顏色GetCurrentBitmap()獲取所選位圖的指針GetCurrentBrush()獲取所選畫刷的指針GetCurrentFront()獲取所選字體的指針GetCurrentPalette()獲取所選調(diào)色板的指針GetCurrentPen()獲取所選畫筆的指針GetCurrentPosition()獲取畫筆的當前位置GetMapMode()獲取當前設(shè)置映射模式GetPixel()獲取給定像素的RGB顏色值(1)CDC中常用的成員函數(shù)現(xiàn)在是55頁\一共有86頁\編輯于星期二GetTextColor()獲取文本顏色GetTextExtent()獲取文本寬度和長度GetWindow()獲取DC窗口的指針LineTo()繪制線條MoveTo()設(shè)置當前畫筆的位置Pie()繪制餅圖Polygon()繪制多邊形Polyline()繪制一組線條RealizePalette()將邏輯調(diào)色板映射到系統(tǒng)調(diào)色板Rectangle()繪制矩形RoundRect()繪制圓角矩形SelectObject()選取GDI繪圖對象SelectStockObject()選取庫存(預(yù)定義)圖形對象SetBkColor()設(shè)置背景顏色對象SetMapMode()設(shè)置映射模式SetPixel()把像素設(shè)置成給定顏色SetTextColor()設(shè)置文本顏色StretchBlt()把位圖從一個DC拷貝到另一個DC,并根據(jù)需要擴充或壓縮位圖TextOut()繪制文本串現(xiàn)在是56頁\一共有86頁\編輯于星期二(2)CDC類的派生類派生類名稱說明CClientDC提供對窗口客戶區(qū)域的圖形訪問。在窗口中畫圖時可使用此類DC,但WM_PAINTWindows消息除外。CMetaFileDC代表Windows圖元文件,它包含一系列命令已重新產(chǎn)生圖形。想要創(chuàng)建獨立于設(shè)備的文件時可使用此類DC,用戶可以回放這種文件來創(chuàng)建圖像。CPaintDC創(chuàng)建響應(yīng)WM_PAINTWindows消息,通常在MFC應(yīng)用程序的OnPaint()函數(shù)中使用。CWindowDC可以提供在整個窗口(包括客戶區(qū)和非客戶區(qū))中畫圖的設(shè)備環(huán)境?,F(xiàn)在是57頁\一共有86頁\編輯于星期二(3)CDC類的調(diào)用函數(shù)與設(shè)備環(huán)境有關(guān)的常用函數(shù):

①GetDC()函數(shù):用于獲取指定窗口的客戶區(qū)的顯示器設(shè)備環(huán)境原型聲明如下:CDC*CWnd::GetDC();②ReleaseDC()函數(shù):用于釋放由調(diào)用GetDC或GetWindowDC函數(shù)獲取的指定設(shè)備環(huán)境。它對類或私有設(shè)備環(huán)境無效,以便該設(shè)備環(huán)境可以被其它應(yīng)用程序使用。其原型聲明如下:intReleaseDC(CDC*pDC);//pDC為待釋放的設(shè)備環(huán)境的指針③BeginPaint()函數(shù):為在指定的窗口中畫圖做準備工作,并且把與繪圖有關(guān)的信息填寫到PAINTSTRUCT結(jié)構(gòu)中。原型聲明如下:CDC*CWnd::BeginPaint(LPPAINTSTRUCTlpPaint);

lpPaint參數(shù)是指向PAINTSTRUCT結(jié)構(gòu)的指針。若函數(shù)調(diào)用成功則返回指定窗口的顯示器設(shè)備環(huán)境的指針,否則返回NULL現(xiàn)在是58頁\一共有86頁\編輯于星期二④EndPaint()函數(shù)EndPaint()函數(shù)是用來結(jié)束指定窗口中的繪圖過程,其原型聲明如下:voidEndPaint(LPPAINTSTRUCTlpPaint);其參數(shù)的含義與BeginPaint()函數(shù)中的相同,返回值總是TRUE。⑤SelectObject()函數(shù)SelectObject()函數(shù)用于把位圖、畫筆、畫刷等GDI對象選入設(shè)備環(huán)境中,用新的對象替代同一類型的對象,其原型聲明如下:CPen*SelectObject(Cpen*pPen);CBrush*SelectObject(CBrush*pBrush);virtualCFont*SelectObject(CFont*pFont);CBitmap*SelectObject(CBitmap*pBitmap);intSelectObject(CRgn*pRgn);現(xiàn)在是59頁\一共有86頁\編輯于星期二⑥D(zhuǎn)eleteObject()函數(shù)DeleteObject()函數(shù)可以刪除邏輯畫筆、畫刷、字體、位圖、區(qū)域或調(diào)色板對象,并釋放所有與該對象相關(guān)的系統(tǒng)資源,當對象被刪除之后,則指定的對象句柄將無效。其原型聲明如下:BOOLDelectObject(HGDIOBJhObject);現(xiàn)在是60頁\一共有86頁\編輯于星期二4、GDI對象GDI對象基類是CGdiObject。使用GDI對象時要注意以下兩點。①同其它MFC對象一樣,GDI對象的創(chuàng)建分為兩步:第一步定義一個GDI繪圖對象類的實例;第二步調(diào)用該對象的創(chuàng)建方法真正創(chuàng)建對象。②使用該對象時,首先要調(diào)用CDC::SelectObject(),將它選入到設(shè)備上下文中,同時保存原來的設(shè)置到一個GDI對象指針如pOldObject中。在使用完后,再用SelectObject(pOldObject)恢復(fù)原來的設(shè)置。但是,如果該設(shè)備上下文是用戶自己創(chuàng)建的,則不必恢復(fù)原來設(shè)置,因為框架會在該設(shè)備上下文生存期結(jié)束時刪除該設(shè)備上下文,同時也就刪除了原來存放于該設(shè)備上下文中的繪圖對象設(shè)置。具體應(yīng)用參見下面的OnDraw函數(shù)。voidCMyProjectView::OnDraw(CDC*pDC){ …… CpenNewPen(PS_SOLID,1,RGB(0,0,0));//構(gòu)造畫筆類對象//選擇新設(shè)備環(huán)境的同時,保存舊的繪圖對象到設(shè)備環(huán)境Cpen*pOldPen=pDC->SelectObject(&NewPen);……pDC->SelectObject(pOldPen);//恢復(fù)舊的繪圖對象……}現(xiàn)在是61頁\一共有86頁\編輯于星期二總之,設(shè)備環(huán)境(DC)和圖形設(shè)備接口(GDI)是實現(xiàn)計算機繪圖的兩個重要的組成部分,DC主要負責設(shè)置繪圖的狀態(tài)和方式,而GDI則主要負責設(shè)置所用的繪圖工具?,F(xiàn)在是62頁\一共有86頁\編輯于星期二2.6.2OnDraw成員函數(shù)VC++所編寫的Windows圖形應(yīng)用程序通常是在視圖類中通過OnDraw函數(shù)中添加繪圖代碼完成圖形的生成。OnDraw函數(shù)是CView類中的一個虛擬成員函數(shù),每當窗口需重繪時應(yīng)用程序框架會調(diào)用它。函數(shù)原型如下:virtualvoidOnDraw(CDC*pDC);

下面的OnDraw函數(shù)是由AppWizard直接生成的:voidCMyProjectView::OnDraw(CDC*pDC){ CMyProjectDoc*pDoc=GetDocument();//獲取當前文檔指針ASSERT_VALID(pDoc);//檢查指針是否為空//TODO:adddrawcodefornativedatahere//下面可添加自己的程序代碼}現(xiàn)在是63頁\一共有86頁\編輯于星期二2.6.3GDI對象類GDI的基本繪圖對象類有:CBitmap類、CBrush類、CFont類、CPen類、CRgn類和CPalette類.它們都是CGdi0bject類的派生類?,F(xiàn)在是64頁\一共有86頁\編輯于星期二1、CPen類

(1)CPen類構(gòu)造函數(shù)CPen的構(gòu)造函數(shù)可創(chuàng)建繪圖對象。該類有3個構(gòu)造函數(shù):CPen();CPen(intnPenStyle,intnWidth,COLORREFcrColor);CPen(intnPenStyle,intmWidth,constLOGVRUSH*pLogBrush,intnStyleCount=0,constDWORD*lpStyle=NULL);該類封裝了Windows圖形設(shè)備接口畫筆,包含在“afxwin.h”頭文件中。畫筆是一種用來畫線及繪制有形邊框的工具,用戶可以指定它的顏色及寬度,并且可以指定它畫實線、點線或虛線。運用缺省畫筆畫的是一個像素寬的黑色實線?,F(xiàn)在是65頁\一共有86頁\編輯于星期二PS_SOLID創(chuàng)建一個實線畫筆

PS_DASH創(chuàng)建一個虛線畫筆,該值只有當畫筆寬度等于1個設(shè)備單位或更小時才有效

PS_DOT創(chuàng)建一個點線畫筆,該值只有當畫筆寬度等于1個設(shè)備單位或更小時才有效

PS_DASHDOT創(chuàng)建一個點和虛線交替畫筆,該值只有當畫筆寬度等于1個設(shè)備單位或更小時才有效

PS_DASHDOTDOT創(chuàng)建一個雙點線畫筆,該值只有當畫筆寬度等于1個設(shè)備單位或更小時才有效

畫筆風格:現(xiàn)在是66頁\一共有86頁\編輯于星期二(2)CPen類初始化成員函數(shù)

①調(diào)用CreatePen()成員函數(shù)

CreatePen()成員函數(shù)通過指定線型、線寬和顏色等畫筆屬性參數(shù)直接創(chuàng)建一個具有特定線型、線寬和顏色的畫筆對象,其原型聲明如下:

BOOLCreatePen(intnPenStyle,intnWidth,COLORREFcrColor);BOOLCreatePen(intnPenStyle,intnWidth,constLOGBRUSH*pLogBrush,intnStyleCount=0,constDWORD*lpStyle=NULL);

②調(diào)用CreatePenIndirect()成員函數(shù)

CreatePenIndirect()成員函數(shù)創(chuàng)建畫筆對象,其屬性并不是直接通過函數(shù)參數(shù)的形式給出的,而是通過LOGPEN結(jié)構(gòu)的成員變量間接地給出。為了創(chuàng)建一個具有特定屬性的畫筆對象主要工作是重置LOGPEN結(jié)構(gòu)的成員變量,該函數(shù)的原型聲明如下;

BOOLCreatePenIndirect(LPLOGPENlpLogPen);

參數(shù)lpLogPen是指向LOGPEN結(jié)構(gòu)的指針,在該結(jié)構(gòu)中有3個成員變量,分別用于指定畫筆的風格、寬度和顏色。LOGPEN結(jié)構(gòu)的具體定義如下:

typedefstructtagLOGPEN{/*lgpn*/UNITlopnStyle;POINTlopnWidth;COLORREFlopnColor;}LOGPEN;現(xiàn)在是67頁\一共有86頁\編輯于星期二2、CBrush類該類封裝了Windows的GDI刷子,包含在“afxwin.h”頭文件中。CBrush類畫刷用來填充一個封閉圖形對象(如矩形、橢圓)的內(nèi)部區(qū)域。缺省的畫刷將封閉圖形的內(nèi)部填充成全白色。通過該類構(gòu)造的CBrush對象可以傳遞給任何一個需要畫刷的CDC成員函數(shù)。該畫刷可以是實線、陰影線或某種圖案。(1)CBrush類構(gòu)造函數(shù)該類具有4個重載的構(gòu)造函數(shù):CBrush();CBrush(COLORREFcrColor);CBrush(intnIndex,COLORREFcrColor);CBrush(CBitmap*pBitmap);現(xiàn)在是68頁\一共有86頁\編輯于星期二(2)CBrush初始化成員函數(shù)①調(diào)用CBrush::CreateSolidBrush()成員函數(shù)來初始化實畫刷,以便使用純色來填充區(qū)域內(nèi)部.②調(diào)用CBrush::CreateHatchBrush()成員因數(shù)來初始化陰影畫刷,參數(shù)與構(gòu)造函數(shù)中的參數(shù)完全相同。

BOOLCreateHatchBrush(intnIndex,COLORREFcrColor);③調(diào)用CBrush::CreatePatternBrush()成員函數(shù)來初始化一個圖形畫刷,當使用該畫刷填充圖形時,圖形內(nèi)部將用位圖一個接一個的填充。該函數(shù)原型聲明如下:BOOLCreatePatternBrush(CBitmap*pBitmap);參數(shù)如前所述。使用圖形畫刷需要注意的是在刪除圖形畫刷時與畫刷相聯(lián)系的位圖并未被刪除,位圖必須被單獨地刪除。④調(diào)用CBrush::CreateBrushIndirect()成員函數(shù)來創(chuàng)建畫刷對象,畫刷的屬性并不是直接通過函數(shù)參數(shù)的形式給出的,而是通過LOGBRUSH結(jié)構(gòu)的成員變量間接的給出的。該函數(shù)原型聲明如下:BOOLCreateBrushIndirect(constLOGBRUSH*lpLogBrush);程序演示現(xiàn)在是69頁\一共有86頁\編輯于星期二3、CFont類該類封裝一個Windows的圖形設(shè)備接口字體并且提供了操縱字體的成員函數(shù),包含在“afxwin.h”頭文件中。字體CFont類是一種具有某種風格和尺寸的所有字符的完整集合,它常常被當作資源存于磁盤中,其中有一些還依賴于某種設(shè)備。要使用CFont對象,則需構(gòu)造一個CFont對象并用成員函數(shù)CreateFont、CreateFontIndirect、CreatePointFont或CreatePointFontIndirect將一個Windows字體附加給它,然后用該對象的成員函數(shù)來操縱字體。CreatePointFont和CreatePointFontIndirect要比CreateFontIndirect好用,因為它們自動將字體高度從點大小變?yōu)檫壿媶挝弧,F(xiàn)在是70頁\一共有86頁\編輯于星期二4、CBitmap類(1)CBitmap類構(gòu)造函數(shù)CBitmap類構(gòu)造函數(shù)的原型為:CBitmap();它負責構(gòu)造一個CBitmap對象。生成的對象必須用下面的成員函數(shù)進行初始化。(2)CBitmap對象的初始化成員函數(shù)①CreateBitmap(intnWidth,intnHeight,UINTnPlanes,UINTnBitcount,constvoid*lpBits)②BOOLLoadBitmap(LPCTSTRlpszResourceName);BOOLLoadBitmap(UINTnIDResoure);現(xiàn)在是71頁\一共有86頁\編輯于星期二2.7OpenGL程序設(shè)計基礎(chǔ)2.7.1OpenGL的主要功能2.7.2OpenGL繪圖程序開發(fā)方法現(xiàn)在是72頁\一共有86頁\編輯于星期二2.7.1OpenGL的主要功能1、OpenGL基本操作①繪制物體:真實世界里的任何物體都可以在計算機中用簡單的點、線、多邊形來描述。OpenGL提供了豐富的基本圖元繪制命令,從而可以方便地繪制物體。②變換:論多么復(fù)雜的圖形都是由基本圖元組成并經(jīng)過一系列變換來實現(xiàn)的,OpenGL提供了一系列基本的變換,如取景變換、模型變換、投影變換及視口變換。③光照處理:正如自然界不可缺少光一樣,繪制有真實感的三維物體必須做光照處理。④著色:OpenGL提供了兩種物體著色模式,一種是RGBA顏色模式,另一種是顏色索引模式。⑤反走樣:在OpenGL繪制圖形過程中,由于使用的是位圖,所以繪制出的圖像的邊緣會出現(xiàn)鋸齒形狀,稱為走樣。為了消除這種缺陷,OpenGL提供了點、線、多邊形的反走樣技術(shù)。⑥融合:為了使三維圖形更加具有真實感,經(jīng)常需要處理半透明或透明的物體圖像,這就要用到融合技術(shù)。⑦霧化:正如自然界中存在煙霧一樣,OpenGL提供了"fog"的基本操作來達到對場景進行霧化的效果。⑧位圖和圖像:在圖形繪制過程中,位圖和圖像操作是非常重要的一個方面。OpenGL提供了一系列函數(shù)來實現(xiàn)位圖和圖像的操作。⑨紋理映射:在計算機圖形學中,把包含顏色、alpha值、亮度等數(shù)據(jù)的矩形數(shù)組稱為紋理。紋理映射可以理解為將紋理粘貼在所繪制的三維模型表面,以使三維圖形顯得更生動。⑩動畫:出色的動畫效果是OpenGL的一大特色,OpenGL提供了雙緩存技術(shù)來實現(xiàn)動畫繪制,即在顯示前臺緩存中圖像的同時,后臺緩存繪制第二幅圖像;當后臺繪制完成后,后臺緩存中的圖像就顯示出來,此時原來的前臺緩存開始繪制第三幅圖像。如此循環(huán)往復(fù),以增加圖像的輸出速度?,F(xiàn)在是73頁\一共有86頁\編輯于星期二2、OpenGL函數(shù)及數(shù)據(jù)類型

OpenGL的庫函數(shù)分為4類:核心庫函數(shù)、實用庫函數(shù)、輔助庫函數(shù)和專用庫函數(shù)①核心庫函數(shù):OpenGL有115個核心庫函數(shù),均以“gl”作為前綴,它們提供了最基本的功能,比如實現(xiàn)三維建模、建立光照模型、反走樣和紋理映射等功能。②實用庫函數(shù):OpenGL的實用庫函數(shù)有43個,以“glu”為前綴,它們在核心函數(shù)的上層。其實質(zhì)是對核心函數(shù)進行組織和封裝,提供比較簡單的函數(shù)接口和用法,可減輕開發(fā)者的編程負擔。③輔助庫函數(shù):OpenGL的輔助庫函數(shù)有31個,以“aux”為前綴。應(yīng)用程序只能在Win32環(huán)境中使用這些函數(shù),可移植性較差,在Windows應(yīng)用程序中一般用于窗口管理、輸入輸出處理以及繪制一些簡單的三維形體。④專用庫函數(shù):專用庫函數(shù)是由6個以“wgl”為前綴的函數(shù)和5個Win32API函數(shù)組成?!皐gl”函數(shù)用于連接Windows和OpenGL、初始化窗口,能夠使用OpenGL在窗口中進行繪制;Win32API函數(shù)是用于處理像素存儲格式、雙緩存等函數(shù)的調(diào)用。

OpenGL中函數(shù)的命名規(guī)則為“前綴——詞根——數(shù)字后綴——類型后綴”。前綴表明函數(shù)的類型;詞根為函數(shù)的功能描述;數(shù)字后綴可以是“2”、“3”、“4”,表明參數(shù)向量的維數(shù);類型后綴可以是“b”、“i”、“f”等,表明函數(shù)參數(shù)的數(shù)據(jù)類型。例如函數(shù)“glColor3f”:“gl”表明這個函數(shù)屬于核心函數(shù),“Color”表明它用來設(shè)置當前顏色,“3”表明函數(shù)需要3個參數(shù),“f”表明函數(shù)的每一個參數(shù)都為浮點型數(shù)值。OpenGL定義的常量,都以GL開頭,并且所有字母都大寫,單詞之間以下劃線來分隔,例如GL_COLOR_BUFFER_BIT。現(xiàn)在是74頁\一共有86頁\編輯于星期二3、OpenGL的緩沖區(qū)OpenGL進行圖形顯示時需要用到4個緩沖區(qū):顏色緩存、深度緩存、模板緩存和累積緩存。①顏色緩存顏色緩存由紅、綠、藍、alpha位平面組成,有前緩存、后緩存、左前緩存、右前緩存、左后緩存、右后緩存。其中左前緩存是必需的顏色緩存,前緩存是可見緩存、后緩存是不可見緩存。前后緩存技術(shù)可實現(xiàn)動畫操作。②深度緩存深度緩存也叫Z-buffer,記錄每個像素點所對應(yīng)的物體點到視點的距離,由此決定表面的可見性,用于物體的消隱。③模板緩存和累積緩存模板緩存和累積緩存主要用于圖形的特殊效果會制。模板緩存存放像素的魔板制,用于控制像素是否被改寫,實現(xiàn)禁止在屏幕的某些區(qū)域繪圖。模板緩存可用于多種復(fù)雜圖形的繪制(凸/凹區(qū)域、凹多邊形等),屏蔽屏幕區(qū)域、遮擋物體、制作物體的交集等。累積緩存是一系列繪制結(jié)果的積累,可用來實現(xiàn)場景的反走樣、景深模擬和運動模糊等?,F(xiàn)在是75頁\一共有86頁\編輯于星期二2.7.2OpenGL繪圖程序開發(fā)方法利用VC++和OpenGL來開發(fā)繪圖程序,需要構(gòu)造一個基于消息的Windows窗口,在這個窗口中使用OpenGL的函數(shù)進行繪制和渲染。有兩種構(gòu)造窗口的方法,一種是應(yīng)用OpenGL的GLU和AUX函數(shù)庫,另一種是使用VC++的MFC。使用輔助函數(shù)庫和使用MFC來構(gòu)造應(yīng)用程序框架的不同之處在于MFC應(yīng)用程序是由Windows來分發(fā)消息,在消息響應(yīng)函數(shù)中處理初始化、設(shè)置繪圖場景和繪制圖形的工作;而使用輔助庫則是編寫回調(diào)函數(shù),然后在主函數(shù)中使用auxReshapeFunc和auxMainLoop調(diào)用回調(diào)函數(shù)來實現(xiàn)消息的循環(huán)。現(xiàn)在是76頁\一共有86頁\編輯于星期二舉例說明用VisualC++開發(fā)OpenGL繪圖程序開發(fā)方法1、利用OpenGL的GLU和AUX函數(shù)庫來實現(xiàn)顏色漸變?nèi)切蔚睦L制及渲染的功能①新建工程在VC++中的“File”菜單中選擇“New”命令,在彈出的對話框中選擇項目的類型為“Win3

溫馨提示

  • 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)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論