06 圖形設(shè)備接口-GDI基本概念_第1頁
06 圖形設(shè)備接口-GDI基本概念_第2頁
06 圖形設(shè)備接口-GDI基本概念_第3頁
06 圖形設(shè)備接口-GDI基本概念_第4頁
06 圖形設(shè)備接口-GDI基本概念_第5頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第6章 圖形與圖像編程根底主講:馬川.本章主要學(xué)習(xí)內(nèi)容:圖形處置的根本原理:圖形設(shè)備接口設(shè)備環(huán)境GDI坐標(biāo)系映射方式運用畫筆和畫刷繪制圖形文本與字體位圖、圖標(biāo)和光標(biāo). Windows圖形設(shè)備接口(GDI是為與設(shè)備無關(guān)的圖形設(shè)計的。所謂設(shè)備的無關(guān)性,就是操作系統(tǒng)屏蔽了硬件設(shè)備的差別,因此設(shè)備無關(guān)性能運用戶編程時無需思索特殊的硬件設(shè)置。.6.1 圖形設(shè)備接口Windows提供了一個稱為圖形設(shè)備接口GDIGraphics Device Interface的籠統(tǒng)接口。GDI作為Windows的重要組成部分,它擔(dān)任管理用戶繪圖操作時功能的轉(zhuǎn)換。用戶經(jīng)過調(diào)用GDI函數(shù)與設(shè)備打交道,GDI經(jīng)過不同設(shè)備提供的

2、驅(qū)動程序?qū)⒗L圖語句轉(zhuǎn)換為對應(yīng)的繪圖指令,防止了直接對硬件進(jìn)展操作,從而實現(xiàn)所謂的設(shè)備無關(guān)性。編程時采用MFC方法繪制圖形也很方便,MFC對GDI函數(shù)和繪圖對象進(jìn)展了封裝。 .圖形設(shè)備接口GDI管理Windows運用程序圖形的繪制,在運用程序中,經(jīng)過調(diào)用GDI函數(shù)繪制不同尺寸、顏色、風(fēng)格的幾何圖形、文本和位圖。這些圖形處置函數(shù)組成了圖形設(shè)備接口GDI。 GDI是構(gòu)成Windows中心的三種動態(tài)鏈接庫之一,MFC將GDI函數(shù)封裝在一個名為CDC的設(shè)備環(huán)境類中,因此我們可以經(jīng)過調(diào)用CDC類的成員函數(shù)來完成繪圖操作。 所謂設(shè)備無關(guān)性,是指操作系統(tǒng)屏蔽了硬件設(shè)備的差別,運用戶編程時普通無需思索設(shè)備的類型

3、,如不同種類的顯示器或打印機。 6.1.1 概述.Windows支持與設(shè)備無關(guān)的圖形利用GDI和Windows設(shè)備驅(qū)動程序開發(fā)人員只需建立與輸出設(shè)備的關(guān)聯(lián),讓系統(tǒng)加載相應(yīng)的設(shè)備驅(qū)動程序即可一、圖形設(shè)備接口(GDI)GDI擔(dān)任系統(tǒng)與用戶或繪圖程序之間的信息交換,并控制在輸出設(shè)備上顯示圖形或文字, 是Windows系統(tǒng)的重要組成部分。. 設(shè)備描畫表即為設(shè)備環(huán)境的屬性的集合。運用程序與輸出設(shè)備之間的橋梁Win系統(tǒng)外設(shè)直接訪問不允許一致的設(shè)備環(huán)境(DC)提供使運用程序與設(shè)備相連用戶為確保圖形輸出的設(shè)備無關(guān)性1. GDI的一些根本概念.Windows繪圖過程和設(shè)備無關(guān)性的實現(xiàn): GDI處于設(shè)備驅(qū)動程序的

4、上一層,當(dāng)程序調(diào)用繪圖函數(shù)時,GDI將繪圖命令傳送給當(dāng)前設(shè)備的驅(qū)動程序,以調(diào)用驅(qū)動程序提供的接口函數(shù)。驅(qū)動程序的接口函數(shù)將Windows繪圖命令轉(zhuǎn)化為設(shè)備可以執(zhí)行的輸出命令,實現(xiàn)圖形的繪制。不同設(shè)備具有不同的驅(qū)動程序,設(shè)備驅(qū)動程序是設(shè)備相關(guān)的。.運用程序設(shè)備描畫表及其屬性經(jīng)過設(shè)備描畫表的句柄來間接地存取運用程序每一次圖形操作均參照設(shè)備描畫表中的屬性執(zhí)行.6.1.2 設(shè)備環(huán)境為了實現(xiàn)設(shè)備無關(guān)性,運用程序的輸出不直接面向顯示器等物理設(shè)備,而是面向一個稱之為設(shè)備環(huán)境DC(Device Context)的虛擬邏輯設(shè)備。設(shè)備環(huán)境也稱設(shè)備描畫表或設(shè)備上下文,它是由Windows管理的一個數(shù)據(jù)構(gòu)造,它保管了

5、繪圖操作中一些共同需求設(shè)置的信息,如當(dāng)前的畫筆、畫刷、字體和位圖等圖形對象及其屬性,以及顏色和背景等影響圖形輸出的繪圖方式?;\統(tǒng)地說,一個設(shè)備環(huán)境提供了一張畫布和一些繪畫的工具,我們可以運用不同顏色的工具在上面繪制點、線、圓和文本。.設(shè)備環(huán)境中的“設(shè)備是指任何類型的顯示器或打印機等輸出設(shè)備,繪圖時用戶不用關(guān)懷所運用設(shè)備的編程原理和方法。一切的繪制操作必需經(jīng)過設(shè)備環(huán)境進(jìn)展間接的處置,Windows自動將設(shè)備環(huán)境所描畫的構(gòu)造映射到相應(yīng)的物理設(shè)備上。從根本上來說,設(shè)備環(huán)境DC是一個Windows數(shù)據(jù)構(gòu)造,該構(gòu)造存儲著程序向設(shè)備輸出時所需求的信息,運用程序利用它定義圖形對象及其屬性,并實現(xiàn)運用程序、設(shè)

6、備驅(qū)動程序和輸出設(shè)備之間繪圖命令的轉(zhuǎn)換。在Windows中不運用DC無法進(jìn)展輸出,在運用任何GDI繪圖函數(shù)之前,必需建立一個設(shè)備環(huán)境。.獲取設(shè)備環(huán)境DC的方法: 在程序中不能直接存取DC數(shù)據(jù)構(gòu)造,只能經(jīng)過系統(tǒng)提供的一系列函數(shù)或運用設(shè)備環(huán)境的句柄HDC來間接地獲取或設(shè)置設(shè)備環(huán)境構(gòu)造中的各項屬性,如顯示器高度和寬度、支持的顏色數(shù)及分辨率等。假設(shè)采用SDK方法編程,獲取DC的方法有兩種:在WM_PAINT音訊處置函數(shù)中經(jīng)過調(diào)用API函數(shù)BeginPaint()獲取設(shè)備環(huán)境,在音訊處置函數(shù)前往前調(diào)用API函數(shù)EndPaint()釋放設(shè)備環(huán)境。在其他函數(shù)中經(jīng)過調(diào)用API函數(shù)GetDC()獲取設(shè)備環(huán)境,調(diào)

7、用API函數(shù)ReleaseDC()釋放設(shè)備環(huán)境。.假設(shè)采用MFC方法編程,MFC提供了不同類型的DC類,每一個類都封裝了DC句柄,并且它們的構(gòu)造函數(shù)自動調(diào)用獲取DC的API函數(shù),析構(gòu)函數(shù)自動調(diào)用釋放DC的API函數(shù)。因此,在程序中經(jīng)過聲明一個MFC設(shè)備環(huán)境類的對象就自動獲取了一個DC,而當(dāng)該對象被銷毀時就自動釋放了獲取的DC。MFC AppWizard運用程序?qū)в蝿?chuàng)建的OnDraw()函數(shù)自動支持所獲取的DC。MFC的DC類包括CDC、CPaintDC、CClientDC、CWindowDC和CMetaFileDC等,其中CDC類是MFC設(shè)備環(huán)境類的基類,其它的MFC設(shè)備環(huán)境類都是CDC的派生

8、類。 .CDC類既作為其它MFC設(shè)備環(huán)境類的基類,又可以作為一個普通的設(shè)備環(huán)境類運用。利用它可以訪問設(shè)備屬性和設(shè)置繪圖屬性。CDC類對GDI的一切繪圖函數(shù)進(jìn)展了封裝。CPaintDC類是OnPaint()函數(shù)運用的設(shè)備環(huán)境類,它代表一個窗口的繪圖畫面。假設(shè)添加WM_PAINT音訊處置函數(shù)OnPaint(),就需求運用CPaintDC類來定義一個設(shè)備環(huán)境對象。 CClientDC類代表了客戶區(qū)設(shè)備環(huán)境。當(dāng)在客戶區(qū)實時繪圖時,需求利用CClientDC類定義一個客戶區(qū)設(shè)備環(huán)境。CWindowDC類代表了整個程序窗口設(shè)備環(huán)境,可以在整個窗口區(qū)域繪圖。 MFC設(shè)備環(huán)境類: .6.1.3 GDI坐標(biāo)系和

9、映射方式 Windows坐標(biāo)系分為邏輯坐標(biāo)系和設(shè)備坐標(biāo)系兩種,GDI支持這兩種坐標(biāo)系。普通而言,GDI的文本和圖形輸出函數(shù)運用邏輯坐標(biāo),而在客戶區(qū)挪動或按下鼠標(biāo)的鼠標(biāo)位置是采用設(shè)備坐標(biāo)。 邏輯坐標(biāo)系是面向DC的坐標(biāo)系,這種坐標(biāo)不思索詳細(xì)的設(shè)備類型,在繪圖時,Windows會根據(jù)當(dāng)前設(shè)置的映射方式將邏輯坐標(biāo)轉(zhuǎn)換為設(shè)備坐標(biāo)。設(shè)備坐標(biāo)系是面向物理設(shè)備的坐標(biāo)系,這種坐標(biāo)以像素或設(shè)備所能表示的最小長度單位為單位,X軸方向向右,Y軸方向向下。設(shè)備坐標(biāo)系的原點位置(0, 0)不限定在設(shè)備顯示區(qū)域的左上角。.設(shè)備坐標(biāo)系分為屏幕坐標(biāo)系、窗口坐標(biāo)系和客戶區(qū)坐標(biāo)系三種相互獨立的坐標(biāo)系。屏幕坐標(biāo)系以屏幕左上角為原點,一些與整個屏幕有關(guān)的函數(shù)均采用屏幕坐標(biāo),如GetCursorPos()、SetCursorPos()、CreateWindow()、MoveWindow()。彈出式菜單運用的也是屏幕坐標(biāo)。窗口坐

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論