版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、2022-2-111圖形系統(tǒng)的初始化及根本框架圖形系統(tǒng)的初始化及根本框架圖形系統(tǒng)中的像素與坐標圖形系統(tǒng)中的像素與坐標常用圖形函數(shù)常用圖形函數(shù)圖形方式下的文本輸出函數(shù)圖形方式下的文本輸出函數(shù)屏幕操作函數(shù)及動畫根本知識屏幕操作函數(shù)及動畫根本知識VRAM的讀寫的讀寫2022-2-112第一節(jié)第一節(jié) 圖形系統(tǒng)的初始化及根本框架圖形系統(tǒng)的初始化及根本框架顯示器的任務方式顯示器的任務方式:文本方式文本方式(默許方式默許方式)以字符為單位顯示文本,普通一屏以字符為單位顯示文本,普通一屏25行行80列字符列字符圖形方式圖形方式 以像素為單位顯示圖形以像素為單位顯示圖形以上兩種顯示方式可以相互轉(zhuǎn)換以上兩種顯示方
2、式可以相互轉(zhuǎn)換2022-2-113一、圖形方式的初始化一、圖形方式的初始化要作圖,必需對顯卡初始化,使之任務在要作圖,必需對顯卡初始化,使之任務在圖形方式圖形方式: 初始化函數(shù)初始化函數(shù): void initgraph(int* gdriver, int* gmode, char* driver_path )該函數(shù)在該函數(shù)在 “graphics.h 中定義中定義第一個參數(shù)對應顯示適配器的類型,目前第一個參數(shù)對應顯示適配器的類型,目前絕大多數(shù)顯卡都是絕大多數(shù)顯卡都是VGA顯卡顯卡第二個參數(shù)對應顯示方式表第二個參數(shù)對應顯示方式表12-1所示所示第三個參數(shù)用來指明顯卡驅(qū)動程序的位置,第三個參數(shù)用來指
3、明顯卡驅(qū)動程序的位置,假設(shè)在當前目錄中,可寫為假設(shè)在當前目錄中,可寫為“初始化方法一初始化方法一:int main( ) int driver = VGA; /VGA其實其實是枚舉常量是枚舉常量 int mode = VGAHI; /高分辨率,高分辨率,見見p141表表 initgraph(&driver, &mode, “D:TC); return 0;假設(shè)驅(qū)動程序在當前目錄中,那么可假設(shè)驅(qū)動程序在當前目錄中,那么可以寫成:以寫成: initgraph(&driver, &mode, “);2022-2-114特別闡明:特別闡明:作圖程序編譯、銜接后,構(gòu)成可執(zhí)行文作圖程序編譯、銜接后,構(gòu)成可
4、執(zhí)行文件件.exe文件,此文件假設(shè)拷貝到其文件,此文件假設(shè)拷貝到其他機器上運轉(zhuǎn),必需保證顯示驅(qū)動程序他機器上運轉(zhuǎn),必需保證顯示驅(qū)動程序在該機存在,且在指定目錄中。在該機存在,且在指定目錄中。假設(shè)用:假設(shè)用:initgraph(&driver, &mode, “D:TC); 那么驅(qū)動程序應在那么驅(qū)動程序應在D:TC中中假設(shè)用:假設(shè)用:initgraph(&driver, &mode, “); 那么驅(qū)動程序應那么驅(qū)動程序應與與.exe文件在同一目錄文件在同一目錄通常,都是把驅(qū)動程序和可執(zhí)行文件一通常,都是把驅(qū)動程序和可執(zhí)行文件一同拷貝。同拷貝。2022-2-115特別闡明:特別闡明:假設(shè)不想向另外
5、機器上拷貝驅(qū)動程序,假設(shè)不想向另外機器上拷貝驅(qū)動程序,想生成一個可獨立運轉(zhuǎn)的想生成一個可獨立運轉(zhuǎn)的exe文件,那么文件,那么需按下面三步進展:需按下面三步進展:1. D:tcBGIOBJ EGAVGA 磁盤上將生成磁盤上將生成EGAVGA.OBJ文件文件2. D:tcTLIB libgraphics.lib+egavga.obj 磁盤上磁盤上graphics.lib將包含驅(qū)動程序?qū)?qū)動程序添加添加4K 3. 程序中,程序中,initgraph()調(diào)用前加上一行:調(diào)用前加上一行: registerbgidriver(EGAVGA_driver);2022-2-116特別闡明:特別闡明:同樣的
6、道理,假設(shè)需求不依賴于字體同樣的道理,假設(shè)需求不依賴于字體(英英)驅(qū)動的可執(zhí)行文件,也需將字體驅(qū)動銜驅(qū)動的可執(zhí)行文件,也需將字體驅(qū)動銜接到接到graphics.lib中,如:中,如:1. D:tcBGIOBJ trip D:tcBGIOBJ litt 磁盤上將生成磁盤上將生成trip.obj、litt.obj文件文件2. D:tcTLIB libgraphics.lib+trip.obj D:tcTLIB libgraphics.lib+litt.obj graphics.lib將包含字符驅(qū)動程序?qū)址?qū)動程序 3. 程序中,程序中,initgraph()調(diào)用前加上:調(diào)用前加上: regi
7、sterbgifont(triplex_font); registerbgifont(small_font);2022-2-117假設(shè)不知道顯示器的類型假設(shè)不知道顯示器的類型, 可將可將graphdriver置置為為DETECT, 系統(tǒng)將自動檢測其類型系統(tǒng)將自動檢測其類型, 將相應的將相應的驅(qū)動程序裝入驅(qū)動程序裝入, 并將顯示方式置成最高方式并將顯示方式置成最高方式初始化方法二初始化方法二:int main() int driver = DETECT; int mode; initgraph(&driver, &mode,“); return 0;2022-2-1182022-2-119二、圖
8、形方式的封鎖二、圖形方式的封鎖封鎖圖形方式,前往文本方式的函數(shù):封鎖圖形方式,前往文本方式的函數(shù): void closegraph( ) 闡明:還有一個闡明:還有一個restorecrtmode( ) 也可以前往文也可以前往文本方式,兩者的區(qū)別:后者在內(nèi)存中保管驅(qū)動本方式,兩者的區(qū)別:后者在內(nèi)存中保管驅(qū)動程序和字符集,暫時前往文本方式,可隨時用程序和字符集,暫時前往文本方式,可隨時用函數(shù)函數(shù)setgraphmode(VGAHI )切換回圖形方式,切換回圖形方式,而而closegraph()那么是完全釋放驅(qū)動程序和字符那么是完全釋放驅(qū)動程序和字符集。集。作圖程序開場時,先要用作圖程序開場時,先要
9、用initgraph()初始化,初始化,而在作圖終了時,總要用而在作圖終了時,總要用closegraph()封鎖圖封鎖圖形方式,使屏幕轉(zhuǎn)回文本方式,程序中的形方式,使屏幕轉(zhuǎn)回文本方式,程序中的initgraph()和和closegraph()總是成對出現(xiàn)的??偸浅蓪Τ霈F(xiàn)的。初始化后的清屏:初始化后的清屏:初始化后普通應清屏,使屏幕好像一張白紙,初始化后普通應清屏,使屏幕好像一張白紙,清屏函數(shù)的原型是:清屏函數(shù)的原型是: void cleardevice( ) ;2022-2-11102022-2-1111三、作圖程序的根本框架及實例三、作圖程序的根本框架及實例#include / 包含繪圖頭文
10、件包含繪圖頭文件int main( ) int gdriver = DETECT; int gmode;initgraph(&gdriver, &gmode, ); cleardevice( ); /*/ /* 此處參與繪圖代碼此處參與繪圖代碼 */ /*/closegraph( );return 0;2022-2-1112例例12-1:畫圓程序:畫圓程序#include int main() int gdriver = DETECT; int gmode;initgraph(&gdriver, &gmode, ); cleardevice(); setcolor(RED); /設(shè)置顏色設(shè)置顏
11、色 circle(320, 240, 50); /畫圓畫圓 getch(); closegraph(); return 0;2022-2-1113第二節(jié)第二節(jié) 圖形系統(tǒng)中的像素與坐標圖形系統(tǒng)中的像素與坐標圖形方式下,屏幕被劃分為一個一個的圖形方式下,屏幕被劃分為一個一個的“點點,這些點被稱作像素。像素是組成圖像的最根本這些點被稱作像素。像素是組成圖像的最根本元素。元素。像素的位置是由坐標表示的像素的位置是由坐標表示的圖形初始化后圖形初始化后, 系統(tǒng)默許的畫圖區(qū)域是整個屏系統(tǒng)默許的畫圖區(qū)域是整個屏幕幕, 畫筆的位置是畫筆的位置是(0,0)-即屏幕左上角。即屏幕左上角。見圖見圖12-1p144像素
12、操作函數(shù):像素操作函數(shù):void putpixel(int x, int y, int color);功能:在指定位置用指定顏色畫一個功能:在指定位置用指定顏色畫一個點點作圖顏色與常量之間的對應關(guān)系作圖顏色與常量之間的對應關(guān)系見表見表12-2 p144int getpixel(int x, int y);功能:前往指定位置的像素顏色功能:前往指定位置的像素顏色2022-2-11142022-2-1115第三節(jié)第三節(jié) 常用圖形函數(shù)常用圖形函數(shù)函數(shù)原型及運用闡明函數(shù)原型及運用闡明參見教材參見教材12.3在程序框架下,逐個練習每個作圖函數(shù)在程序框架下,逐個練習每個作圖函數(shù)的用法。的用法。2022-2
13、-1116第四節(jié)第四節(jié) 圖形方式下的文本輸出函數(shù)圖形方式下的文本輸出函數(shù)1、void outtext(char *textstring);功能:在當前位置輸出字符串功能:在當前位置輸出字符串闡明:闡明:textstring可以是指向字符串的指針變量,可以是指向字符串的指針變量,也可以是字符串常量也可以是字符串常量如:如:char *p=“hello; outtext(p);outtext(“hello);2022-2-11172、void outtextxy(int x, int y, char * textstring);功能:在指定位置輸出字符串功能:在指定位置輸出字符串如:如: char
14、 *p=“hello; outtextxy(200,100,p);或:或: outtextxy(200,100,“hello);2022-2-11183、void settextstyle(int font, int derection,char size);功能:設(shè)置文本的字體、字號和輸出方向功能:設(shè)置文本的字體、字號和輸出方向4、void settextjustyle(int horiz, int vert);功能:設(shè)置文本輸出的對齊方式功能:設(shè)置文本輸出的對齊方式以上兩個函數(shù)的詳細闡明請參閱教材以上兩個函數(shù)的詳細闡明請參閱教材2022-2-1119實實 訓訓1、畫一條正弦曲線一個周期、畫
15、一條正弦曲線一個周期2、在屏幕上模擬滿天星、時明時滅的效果、在屏幕上模擬滿天星、時明時滅的效果3、分別畫一個圓、橢圓、矩形、條形圖、扇、分別畫一個圓、橢圓、矩形、條形圖、扇形圖、三維條形圖,并用不同顏色填充形圖、三維條形圖,并用不同顏色填充4、鍵盤輸入、鍵盤輸入10名學生的成果三科,畫出名學生的成果三科,畫出總分前三名的直方圖,用圓餅圖畫出平總分前三名的直方圖,用圓餅圖畫出平均分在各分數(shù)段的比例不及格、均分在各分數(shù)段的比例不及格、60-69,70-79,80-89,90-100,圖形中要有圖,圖形中要有圖例。例。2022-2-1120第五節(jié)第五節(jié) 屏幕操作函數(shù)及動畫知識屏幕操作函數(shù)及動畫知識常
16、用的屏幕操作函數(shù)常用的屏幕操作函數(shù)動畫設(shè)計的方法動畫設(shè)計的方法動畫舉例動畫舉例2022-2-1121一、一、 屏幕操作函數(shù)屏幕操作函數(shù)屏幕操作函數(shù)屏幕操作函數(shù)void getimage(int x1,int y1,int x2,int y2,void *bitmap);unsigned imagesize(int x1, int y1, int x2, int y2);void putimage(int x1, int y1, void *bitmap, int op);void setviewport(int x1,int y1,int x2,int y2,int clipflag);voi
17、d clearviewport();2022-2-1122二、二、 動畫設(shè)計的方法動畫設(shè)計的方法利用動態(tài)開辟圖視口的方法利用動態(tài)開辟圖視口的方法利用顯示頁和編輯頁的交替變化的方法利用顯示頁和編輯頁的交替變化的方法利用畫面存儲再重放的方法利用畫面存儲再重放的方法直接寫屏的方法直接寫屏的方法2022-2-1123三、三、 動畫設(shè)計舉例動畫設(shè)計舉例利用動態(tài)開辟圖視口的方法利用動態(tài)開辟圖視口的方法一步步做例一步步做例12-2利用畫面存儲再重放的方法利用畫面存儲再重放的方法一步步做例一步步做例12-32022-2-1124第六節(jié)第六節(jié) VRAM的讀寫的讀寫屏幕圖形與屏幕圖形與VRAM的關(guān)系的關(guān)系VGA顯
18、存的位面構(gòu)造顯存的位面構(gòu)造圖像存儲讀圖像存儲讀VRAM圖像回放寫圖像回放寫VRAM2022-2-1125一一 、屏幕圖形與、屏幕圖形與VRAM的關(guān)系的關(guān)系顯存中的數(shù)據(jù)二進制數(shù)經(jīng)過顯存中的數(shù)據(jù)二進制數(shù)經(jīng)過顯卡的一些部件轉(zhuǎn)變?yōu)槟M信號顯卡的一些部件轉(zhuǎn)變?yōu)槟M信號后,發(fā)送到顯示器上,便是我們后,發(fā)送到顯示器上,便是我們看到的圖像。看到的圖像。由此可知:屏幕上的圖像是由顯由此可知:屏幕上的圖像是由顯存中的數(shù)據(jù)決議的。存中的數(shù)據(jù)決議的。2022-2-1126結(jié)論:結(jié)論:改動顯存中的數(shù)據(jù),就可以改動圖改動顯存中的數(shù)據(jù),就可以改動圖像像把顯存中的數(shù)據(jù)寫到文件中,意味把顯存中的數(shù)據(jù)寫到文件中,意味著存儲了圖像
19、著存儲了圖像將文件中的數(shù)據(jù)重新寫回顯存,可將文件中的數(shù)據(jù)重新寫回顯存,可再現(xiàn)原來的圖像再現(xiàn)原來的圖像2022-2-1127二二 、VGA顯存的位面構(gòu)造顯存的位面構(gòu)造VGA顯存與內(nèi)存一致編址,顯存的起始地顯存與內(nèi)存一致編址,顯存的起始地址是:址是:0 xa000:0 x0000VGA顯存最多顯存最多256K,平均分成,平均分成4部分,每部部分,每部分分64K,稱作一個位面。,稱作一個位面。xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx位面3位面2位面1位面0每位面每位面64KB64KB2022-2-1128二二 、
20、VGA顯存的位面構(gòu)造顯存的位面構(gòu)造四個位面四個位面0、1、2、3運用一樣的地址,運用一樣的地址,即:顯存中的一個地址實踐上對應著即:顯存中的一個地址實踐上對應著4個位個位面上的面上的4個字節(jié)每位面一個字節(jié)個字節(jié)每位面一個字節(jié)xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx0 xa000:0 x00000 xa000:0 x0001四個位面總共占用64KB的地址編碼2022-2-1129二二 、VGA顯存的位面構(gòu)造顯存的位面構(gòu)造4個位面上一樣位置的個位面上一樣位置的4個二進制數(shù),決議著個二進制數(shù),決議著顯示器上一個像
21、素的顏色。顯示器上一個像素的顏色。10 xxxxxx01xxxxxx00 xxxxxx00 xxxxxxxxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx 決議著屏幕上第0個像素的顏色:0001藍色4個位面上一樣地址個位面上一樣地址的的4個字節(jié)決議著屏個字節(jié)決議著屏幕上幕上8個點的顏色個點的顏色決議著屏幕上第1個像素的顏色:0010綠色位面3位面02022-2-11302022-2-1131三三 、圖像存儲讀、圖像存儲讀VRAM要將圖像存起來,實踐上就是把顯存要將圖像存起來,實踐上就是把顯存4個位個位面中的數(shù)據(jù)存起來,即把面中的數(shù)據(jù)存起來,即把0 xa000:0 x0000
22、開開場的、總共場的、總共640*480/8=38400個字節(jié)的個字節(jié)的4個個位面的數(shù)據(jù)全部存到文件中,可用位面的數(shù)據(jù)全部存到文件中,可用fputc()函數(shù)函數(shù)但是,每次只能讀取一個位面上的數(shù)據(jù),但是,每次只能讀取一個位面上的數(shù)據(jù),如何選取位面?如何選取位面?2022-2-1132VGA顯卡上有一個圖形控制器,含有許多顯卡上有一個圖形控制器,含有許多存放器,其中有個讀位面選擇存放器口存放器,其中有個讀位面選擇存放器口地址地址0 x3cf,經(jīng)過給它不同的數(shù)值,可以,經(jīng)過給它不同的數(shù)值,可以實現(xiàn)對位面的選擇僅讀操作時實現(xiàn)對位面的選擇僅讀操作時 如:如:outportb(0 x3cf, 0); /表示
23、要讀位面表示要讀位面0outportb(0 x3cf, 1); /表示要讀位面表示要讀位面12022-2-1133但是,讀位面選擇存放器和其他但是,讀位面選擇存放器和其他8個存放器共個存放器共用一個口地址,用哪個由索引存放器決議:用一個口地址,用哪個由索引存放器決議:索引寄存器的值索引寄存器的值(口地址0 x3ce)對應的寄存器對應的寄存器(口地址都是0 x3cf)0設(shè)置/清除寄存器1設(shè)置/清除允許寄存器2顏色比較寄存器3數(shù)據(jù)旋轉(zhuǎn)移動與功能選擇寄存器4讀顏色位面選擇寄存器讀顏色位面選擇寄存器5方式寄存器6混合寄存器7顏色無關(guān)寄存器8位屏蔽寄存器2022-2-1134可見,前面代碼可見,前面代碼
24、 “outportb(0 x3cf, 0); 中中的的“0送入哪個存放器,是由索引存放器控送入哪個存放器,是由索引存放器控制的。制的。索引存放器的口地址是索引存放器的口地址是0 x3ce,當索引值是,當索引值是4時,時,表示選中的是讀位面選擇存放器,表示選中的是讀位面選擇存放器, “0才干才干被送入讀位面選擇存放器被送入讀位面選擇存放器2022-2-1135數(shù)據(jù):數(shù)據(jù):040:XX存放器存放器4:讀位面選擇存:讀位面選擇存放器放器1:XX存放器存放器2:XX存放器存放器3:XX存放器存放器5:XX存放器存放器6:XX存放器存放器7:XX存放器存放器索引存放器索引存放器口地址:口地址:0 x3c
25、e8:XX存放器存放器口地址:口地址:0 x3cf執(zhí)行執(zhí)行outport(0 x3cf, 0)的過程的過程2022-2-1136因此,需求:因此,需求:先用下面的語句指明:口地址先用下面的語句指明:口地址0 x3cf對對應的是應的是“讀位面選擇存放器讀位面選擇存放器outportb(0 x3ce, 4); 然后再選擇位面:然后再選擇位面:outportb(0 x3cf, 0); /設(shè)要讀位面設(shè)要讀位面0兩者可以合并:兩者可以合并: outport(0 x3ce, 0 x0004); 2022-2-1137中心代碼:中心代碼:char far *p; fp = fopen(pic.dat,wb)
26、; for(i = 0; i 4; i+) outportb(0 x3ce, 4); /選擇讀位面選擇讀位面選擇存放器選擇存放器 outportb(0 x3cf, i); /選擇位面選擇位面i p = (char far*)0 xa0000000L; /p指指向顯存開頭向顯存開頭 for(j = 0; j 38400L; j+) putc(*p, fp); p+; 寫位面與讀位面不同,可以同時寫幾個位面寫位面與讀位面不同,可以同時寫幾個位面寫進每個位面的數(shù)據(jù)是一樣的。假設(shè)數(shù)寫進每個位面的數(shù)據(jù)是一樣的。假設(shè)數(shù)據(jù)不一樣,需求分別寫,一次寫一個位面。據(jù)不一樣,需求分別寫,一次寫一個位面。寫哪些位面,由顏色位面寫允許存放器口寫哪些位面,由顏色位面寫允許存放器口地址:地址:0 x3c5的低的低4位控制,如:位控制,如:2022-2-1138四四 、圖像回放寫、圖像回放寫VRAM 顏色位面寫允許寄存器低顏色位面寫允許寄存器低4位位位位3210數(shù)值數(shù)值1011含義含義位面位面3可寫可寫位面位面2不可寫不可寫位面位面1可寫可寫位面位面0可寫可寫2022-2-1
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 貴州城市職業(yè)學院《女生健美操》2023-2024學年第一學期期末試卷
- 貴陽職業(yè)技術(shù)學院《藥品與生物制品檢測》2023-2024學年第一學期期末試卷
- 2025貴州省建筑安全員《B證》考試題庫及答案
- 貴陽人文科技學院《室內(nèi)空氣污染監(jiān)測與治理實驗》2023-2024學年第一學期期末試卷
- 廣州珠江職業(yè)技術(shù)學院《電路分析實驗》2023-2024學年第一學期期末試卷
- 2025天津市安全員-C證考試題庫
- 廣州應用科技學院《女性文學與女性文化研究》2023-2024學年第一學期期末試卷
- 廣州衛(wèi)生職業(yè)技術(shù)學院《城鄉(xiāng)規(guī)劃設(shè)計基礎(chǔ)II》2023-2024學年第一學期期末試卷
- 廣州鐵路職業(yè)技術(shù)學院《電化學與腐蝕原理》2023-2024學年第一學期期末試卷
- 2025云南省建筑安全員-C證考試(專職安全員)題庫附答案
- 2024年06月上海廣發(fā)銀行上海分行社會招考(622)筆試歷年參考題庫附帶答案詳解
- TSG 51-2023 起重機械安全技術(shù)規(guī)程 含2024年第1號修改單
- 計算機科學導論
- 浙江省杭州市錢塘區(qū)2023-2024學年四年級上學期英語期末試卷
- 《工程勘察設(shè)計收費標準》(2002年修訂本)
- 2024年一級消防工程師《消防安全技術(shù)綜合能力》考試真題及答案解析
- 2024-2025學年六上科學期末綜合檢測卷(含答案)
- 安徽省森林撫育技術(shù)導則
- 2024年湖南省公務員考試《行測》真題及答案解析
- 超聲科危急值內(nèi)容及報告制度
- 過賬協(xié)議模板
評論
0/150
提交評論