




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、 第第3章章 高級(jí)編程技術(shù)的實(shí)現(xiàn)高級(jí)編程技術(shù)的實(shí)現(xiàn)主要內(nèi)容主要內(nèi)容操作手段顯示方式圖形繪制技術(shù)圖像技術(shù)動(dòng)畫(huà)技術(shù)發(fā)聲技術(shù)漢字顯示技術(shù)準(zhǔn)確的時(shí)間控制技術(shù) 第第3 3章章 高級(jí)編程技術(shù)的實(shí)現(xiàn)高級(jí)編程技術(shù)的實(shí)現(xiàn)z操作手段:鍵盤(pán)操作手段:鍵盤(pán)在鍵盤(pán)內(nèi)有一個(gè)微處置器,用來(lái)掃描和檢測(cè)每個(gè)鍵的按下和抬起形狀,然后以程序中斷INT 9H的方式與主機(jī)通訊,向主機(jī)傳送一個(gè)字節(jié)的按鍵掃描碼。接著ROM中BIOS內(nèi)的鍵盤(pán)中斷處置程序,將按鍵掃描碼翻譯成對(duì)應(yīng)的ASCII碼或擴(kuò)展的ASCII碼,存放在AX存放器中。 它不是它不是ASCIIASCII碼;其碼;其0606位標(biāo)識(shí)位標(biāo)識(shí)了每個(gè)鍵在鍵盤(pán)上的位置,最了每個(gè)鍵在鍵盤(pán)上的
2、位置,最高位為高位為0 0對(duì)應(yīng)該鍵是被按下;對(duì)應(yīng)該鍵是被按下;1 1對(duì)應(yīng)松開(kāi);它并不能區(qū)別大小對(duì)應(yīng)松開(kāi);它并不能區(qū)別大小寫(xiě)字母,而且一些特殊鍵不產(chǎn)寫(xiě)字母,而且一些特殊鍵不產(chǎn)生掃描碼直接引起中斷調(diào)用生掃描碼直接引起中斷調(diào)用 鍵名AHAL字符鍵ASCII碼ASCII碼功能鍵/組合鍵擴(kuò)展碼的ASCII碼0原理原理第第3 3章章 高級(jí)編程技術(shù)的實(shí)現(xiàn)高級(jí)編程技術(shù)的實(shí)現(xiàn)z操作手段:鍵盤(pán)操作手段:鍵盤(pán)方法方法方法一:直接運(yùn)用聲明在bios.h中的庫(kù)函數(shù)bioskey();方法二:經(jīng)過(guò)庫(kù)函數(shù)int86(),調(diào)用BIOS的INT 16H、功能 號(hào)為0的中斷。它將按鍵的掃描碼存放在AH存放器 中;方法三:簡(jiǎn)單地利
3、用聲明在conio.h中的庫(kù)函數(shù)kbhit()。第第3 3章章 高級(jí)編程技術(shù)的實(shí)現(xiàn)高級(jí)編程技術(shù)的實(shí)現(xiàn)z操作手段:鍵盤(pán)操作手段:鍵盤(pán)方法一方法一int bioskey(int cmd)int bioskey(int cmd);/ /* *參數(shù)參數(shù)cmdcmd用來(lái)確定函數(shù)如何操作用來(lái)確定函數(shù)如何操作* */ /cmd=0bioskey()前往按健的鍵值,該值是前往按健的鍵值,該值是2個(gè)字節(jié)的整型數(shù)。個(gè)字節(jié)的整型數(shù)。假設(shè)沒(méi)有鍵按下,那么該函數(shù)不斷等待,直到有鍵按下假設(shè)沒(méi)有鍵按下,那么該函數(shù)不斷等待,直到有鍵按下。當(dāng)按下時(shí),假設(shè)前往值的低。當(dāng)按下時(shí),假設(shè)前往值的低8位為非零,那么表示為位為非零,那么表
4、示為普通鍵,其值代表該鍵的普通鍵,其值代表該鍵的ASCII碼。假設(shè)前往值的低碼。假設(shè)前往值的低8位位為為0,那么高,那么高8位表示為擴(kuò)展的位表示為擴(kuò)展的ASCII碼,表示按下的是碼,表示按下的是特殊功能鍵特殊功能鍵第第3 3章章 高級(jí)編程技術(shù)的實(shí)現(xiàn)高級(jí)編程技術(shù)的實(shí)現(xiàn)z操作手段:鍵盤(pán)操作手段:鍵盤(pán)方法一方法一int bioskey(int cmd)int bioskey(int cmd);/ /* *參數(shù)參數(shù)cmdcmd用來(lái)確定函數(shù)如何操作用來(lái)確定函數(shù)如何操作* */ /cmd=1bioskey()查詢(xún)能否有鍵按下。假設(shè)前往非查詢(xún)能否有鍵按下。假設(shè)前往非0值,那么表值,那么表示有鍵按下,假設(shè)為示
5、有鍵按下,假設(shè)為0表示沒(méi)鍵按下。表示沒(méi)鍵按下。第第3 3章章 高級(jí)編程技術(shù)的實(shí)現(xiàn)高級(jí)編程技術(shù)的實(shí)現(xiàn)z操作手段:鍵盤(pán)操作手段:鍵盤(pán)方法一方法一int bioskey(int cmd)int bioskey(int cmd);/ /* *參數(shù)參數(shù)cmdcmd用來(lái)確定函數(shù)如何操作用來(lái)確定函數(shù)如何操作* */ /cmd=2bioskey()將前往一些控制鍵能否被按過(guò),按過(guò)的形狀將前往一些控制鍵能否被按過(guò),按過(guò)的形狀由該函數(shù)前往的低由該函數(shù)前往的低8位的各位值來(lái)表示:位的各位值來(lái)表示: 字節(jié)位字節(jié)位 對(duì)應(yīng)的對(duì)應(yīng)的16進(jìn)制數(shù)進(jìn)制數(shù)含義含義 0 0 x01右邊的右邊的shift鍵被按下鍵被按下 1 0 x0
6、2 左邊的左邊的shift鍵被按下鍵被按下 2 0 x04Ctrl鍵被按鍵被按下下 3 0 x08 Alt鍵被按下鍵被按下 4 0 x10 Scroll Lock已翻開(kāi)已翻開(kāi) 5 0 x20Num Lock已已翻開(kāi)翻開(kāi) 6 0 x40Caps Lock已已翻開(kāi)翻開(kāi) 7 0 x80 Insert已翻開(kāi)已翻開(kāi)第第3 3章章 高級(jí)編程技術(shù)的實(shí)現(xiàn)高級(jí)編程技術(shù)的實(shí)現(xiàn)z操作手段:鍵盤(pán)操作手段:鍵盤(pán)方法二方法二/* 讀鍵函數(shù),前往掃描碼 */int getKeySCode()union REGS rg; rg.h.ah=0;int86(0 x16,&rg,&rg);return rg.h.a
7、h; 第第3 3章章 高級(jí)編程技術(shù)的實(shí)現(xiàn)高級(jí)編程技術(shù)的實(shí)現(xiàn)z操作手段:鍵盤(pán)操作手段:鍵盤(pán)方法三方法三int kbhit(void); 假設(shè)按了鍵盤(pán),該函數(shù)前往值1,否那么前往值0。 第第3 3章章 高級(jí)編程技術(shù)的實(shí)現(xiàn)高級(jí)編程技術(shù)的實(shí)現(xiàn)z操作手段:鼠標(biāo)操作手段:鼠標(biāo)DOS操作系統(tǒng)和Turbo C 2.0并不支持鼠標(biāo)器的操作。要支配鼠標(biāo)器,首先必需安裝相應(yīng)的鼠標(biāo)驅(qū)動(dòng)程序。鼠標(biāo)驅(qū)動(dòng)程序由消費(fèi)鼠標(biāo)的廠家提供,它提供了許多鼠標(biāo)操作的功能。這些功能可以經(jīng)過(guò)INT 33H鼠標(biāo)中斷調(diào)用來(lái)運(yùn)用。原理原理第第3 3章章 高級(jí)編程技術(shù)的實(shí)現(xiàn)高級(jí)編程技術(shù)的實(shí)現(xiàn)z操作手段:鼠標(biāo)操作手段:鼠標(biāo)常用功能常用功能/*顯示鼠標(biāo)
8、器光標(biāo)*/void cursorOn() union REGS r; struct SREGS s; r.x.ax1; /* 1號(hào)鼠標(biāo)器功能:顯示鼠標(biāo)光標(biāo) */ msvisibleTRUE; int86x(0 x33,&r,&r,&s); 第第3 3章章 高級(jí)編程技術(shù)的實(shí)現(xiàn)高級(jí)編程技術(shù)的實(shí)現(xiàn)/*封鎖鼠標(biāo)器光標(biāo)*/void cursorOff() union REGS r; struct SREGS s; r.x.ax2; /* 2號(hào)鼠標(biāo)器功能 :不顯示鼠標(biāo)光標(biāo) */ msvisibleFALSE; int86x(0 x33,&r,&r,&s);
9、z操作手段:鼠標(biāo)操作手段:鼠標(biāo)常用功能常用功能第第3 3章章 高級(jí)編程技術(shù)的實(shí)現(xiàn)高級(jí)編程技術(shù)的實(shí)現(xiàn)/*設(shè)定鼠標(biāo)光標(biāo)的初始位置*/void cursorXY(unsigned int x, unsigned int y) union REGS r; struct SREG s; r.x.ax=4; /* 4號(hào)鼠標(biāo)器功能:設(shè)置鼠標(biāo)光標(biāo)位置 */ r.x.cx=x; /* 設(shè)定光標(biāo)x坐標(biāo) */ r.x.dx=y; /* 設(shè)定光標(biāo)y坐標(biāo) */ int86x(0 x33,&r,&r,&s); mousex=x; mousey=y; z操作手段:鼠標(biāo)操作手段:鼠標(biāo)常用功能常用功能第
10、第3 3章章 高級(jí)編程技術(shù)的實(shí)現(xiàn)高級(jí)編程技術(shù)的實(shí)現(xiàn)/*報(bào)告鼠標(biāo)器當(dāng)前光標(biāo)位置和當(dāng)前按鍵形狀*/void mouseRead() union REGS rl,r2; struct SREGS s; r1.x.ax=3; /* 3號(hào)鼠標(biāo)器功能:取按鈕形狀和鼠標(biāo)位置 */ int86x(0 x33,&r1,r2,&s); mousex=r2.x.cx;/*鼠標(biāo)器光標(biāo)x方向坐標(biāo)*/ mousey=r2.x.dx;/*鼠標(biāo)器光標(biāo)y方向坐標(biāo)*/ mousekey=r2.x.bx; /*鼠標(biāo)器按健形狀*/ z操作手段:鼠標(biāo)操作手段:鼠標(biāo)常用功能常用功能第第3 3章章 高級(jí)編程技術(shù)的實(shí)現(xiàn)高級(jí)編
11、程技術(shù)的實(shí)現(xiàn)/*等待鼠標(biāo)器的某種形狀*/void wait(int i) do mouseread(); while(mousekey=i); z操作手段:鼠標(biāo)操作手段:鼠標(biāo)常用功能常用功能第第3 3章章 高級(jí)編程技術(shù)的實(shí)現(xiàn)高級(jí)編程技術(shù)的實(shí)現(xiàn)主要內(nèi)容主要內(nèi)容操作手段顯示方式圖形繪制技術(shù)圖像技術(shù)動(dòng)畫(huà)技術(shù)發(fā)聲技術(shù)漢字顯示技術(shù)準(zhǔn)確的時(shí)間控制技術(shù) 第第3 3章章 高級(jí)編程技術(shù)的實(shí)現(xiàn)高級(jí)編程技術(shù)的實(shí)現(xiàn)z顯示方式:顯示系統(tǒng)顯示方式:顯示系統(tǒng)顯卡在計(jì)算機(jī)主機(jī)和顯示器之間起到了信息轉(zhuǎn)換和視頻發(fā)送作用,必需與顯示器配套。不同種類(lèi)的顯卡支持的顯示方式種類(lèi)不同,而且同一顯卡普通可以支持多種顯示方式。一種顯示方式指定
12、了相應(yīng)顯示器的任務(wù)方式、分辨率和顏色數(shù)目。 顯顯 卡卡第第3 3章章 高級(jí)編程技術(shù)的實(shí)現(xiàn)高級(jí)編程技術(shù)的實(shí)現(xiàn)z顯示方式:顯示系統(tǒng)顯示方式:顯示系統(tǒng) 常見(jiàn)顯卡及其方式常見(jiàn)顯卡及其方式第第3 3章章 高級(jí)編程技術(shù)的實(shí)現(xiàn)高級(jí)編程技術(shù)的實(shí)現(xiàn)z顯示方式:顯示系統(tǒng)顯示方式:顯示系統(tǒng) 顯示器任務(wù)方式顯示器任務(wù)方式顯示器有兩種任務(wù)方式,即文本顯示方式和圖形顯示方式,它們的主要差別是顯示存儲(chǔ)器(VRAM)中存的信息不同。文本方式時(shí),VRAM存放要顯示字符的ASCII碼,用它作為地址,取出字符發(fā)生器ROM中存放的相應(yīng)字符的圖像變成視頻信號(hào)在顯示器屏幕上進(jìn)展顯示。圖形方式時(shí),那么要顯示的圖形的圖像直接存在VRAM中,
13、VRAM中某地址單元存放的數(shù)就表示了相應(yīng)屏幕上某行和列上的像素及顏色。 第第3 3章章 高級(jí)編程技術(shù)的實(shí)現(xiàn)高級(jí)編程技術(shù)的實(shí)現(xiàn)z顯示方式:顯示方式:也稱(chēng)作字符顯示方式,是Turbo C確省的顯示方式。文本方式屏幕的最大分辨單位是單個(gè)字符,字符顯示的位置用行和列坐標(biāo)來(lái)表示。文本方式文本方式第第3 3章章 高級(jí)編程技術(shù)的實(shí)現(xiàn)高級(jí)編程技術(shù)的實(shí)現(xiàn)z顯示方式:文本方式顯示方式:文本方式方式設(shè)定方式設(shè)定Turbo C支持的幾種文本顯示方式可以用下面的函數(shù)來(lái)設(shè)置: void textmode(int newmode);。 第第3 3章章 高級(jí)編程技術(shù)的實(shí)現(xiàn)高級(jí)編程技術(shù)的實(shí)現(xiàn)z顯示方式:文本方式顯示方式:文本方
14、式顏色設(shè)置顏色設(shè)置void textbackground(int color);/*設(shè)置字符背景顏色設(shè)置字符背景顏色*/void textcolor(int color); /*設(shè)置字符顏色設(shè)置字符顏色*/void textattr(int attr);/*可同時(shí)設(shè)置文本的字符和背景顏色可同時(shí)設(shè)置文本的字符和背景顏色*/第第3 3章章 高級(jí)編程技術(shù)的實(shí)現(xiàn)高級(jí)編程技術(shù)的實(shí)現(xiàn)z顯示方式:文本方式顯示方式:文本方式窗口設(shè)置窗口設(shè)置Turbo C確省定義的文本窗口為整個(gè)屏幕。用戶(hù)可以經(jīng)過(guò)函數(shù): void window(int left, int top, int right, int bottom);
15、定義屏幕上的一個(gè)矩形域作為窗口。參數(shù)left,top是窗口左上角所在的屏幕坐標(biāo),right,bottom是窗口的右下角所在的屏幕坐標(biāo)。窗口定義之后,用有關(guān)窗口的輸入輸出函數(shù)就可以只在此窗口內(nèi)進(jìn)展操作而不超出窗口的邊境。另外,一個(gè)屏幕可以定義多個(gè)窗口,但現(xiàn)行窗口只能有一個(gè)。 第第3 3章章 高級(jí)編程技術(shù)的實(shí)現(xiàn)高級(jí)編程技術(shù)的實(shí)現(xiàn)z顯示方式:文本方式顯示方式:文本方式窗口操作窗口操作窗口內(nèi)文本輸出函數(shù):窗口內(nèi)文本輸出函數(shù): int cprintf(char int cprintf(char * *formatformat,表達(dá)式表,表達(dá)式表) ); int cputs(char int cputs(
16、char * *str)str); int putch(int ch) int putch(int ch);/ /* *這三個(gè)函數(shù)受窗口的控制,窗口內(nèi)顯示光標(biāo)的位置就這三個(gè)函數(shù)受窗口的控制,窗口內(nèi)顯示光標(biāo)的位置就是它們開(kāi)場(chǎng)輸出的位置。當(dāng)輸出行超越窗口右邊境或輸是它們開(kāi)場(chǎng)輸出的位置。當(dāng)輸出行超越窗口右邊境或輸出到窗口底部邊境時(shí),會(huì)自動(dòng)轉(zhuǎn)到窗口內(nèi)的下一行輸出出到窗口底部邊境時(shí),會(huì)自動(dòng)轉(zhuǎn)到窗口內(nèi)的下一行輸出或自動(dòng)上卷窗口內(nèi)的內(nèi)容繼續(xù)輸出或自動(dòng)上卷窗口內(nèi)的內(nèi)容繼續(xù)輸出* */ /光標(biāo)操作函數(shù):光標(biāo)操作函數(shù): void gotoxy(int x, int y); / void gotoxy(int x,
17、 int y); /* *把光標(biāo)移到窗口把光標(biāo)移到窗口(x,y)(x,y)處處* */ /第第3 3章章 高級(jí)編程技術(shù)的實(shí)現(xiàn)高級(jí)編程技術(shù)的實(shí)現(xiàn)z顯示方式:文本方式顯示方式:文本方式屏幕操作屏幕操作 清屏函數(shù):清屏函數(shù): void clrscr(void); / void clrscr(void); /* *去除窗口文本,光標(biāo)移到去除窗口文本,光標(biāo)移到(1,1)(1,1)* */ / void clreol(void); / void clreol(void); /* *去除窗口從光標(biāo)位置開(kāi)去除窗口從光標(biāo)位置開(kāi)場(chǎng)到本行場(chǎng)到本行 結(jié) 尾 的結(jié) 尾 的一切字符,但光標(biāo)不變一切字符,但光標(biāo)不變 * *
18、/ / void delline(void); / void delline(void); /* *刪除當(dāng)前窗口的當(dāng)前行刪除當(dāng)前窗口的當(dāng)前行* */ /第第3 3章章 高級(jí)編程技術(shù)的實(shí)現(xiàn)高級(jí)編程技術(shù)的實(shí)現(xiàn)z顯示方式:文本方式顯示方式:文本方式屏幕操作屏幕操作 屏幕文本挪動(dòng)函數(shù):屏幕文本挪動(dòng)函數(shù): void movetext(int x1, int y1, int x2, int y2, int x3, int y3);屏幕文本存取函數(shù)屏幕文本存取函數(shù)void gettext(int x1, int y1, int x2, int y2, void *buffer);void puttext(i
19、nt x1, int y1, int x2, int y2, void *buffer); 第第3 3章章 高級(jí)編程技術(shù)的實(shí)現(xiàn)高級(jí)編程技術(shù)的實(shí)現(xiàn)z顯示方式:文本方式顯示方式:文本方式編制一個(gè)程序,將屏幕垂直平分成兩個(gè)窗口,左邊窗口為藍(lán)色背景,白色前景,右邊窗口為綠色背景,紅色前景。兩個(gè)窗口都設(shè)計(jì)為文本輸入,即在窗口中可以輸入文字,在窗口屏幕中顯示出來(lái)。運(yùn)用tab鍵在左右兩個(gè)窗口中切換,每個(gè)窗口都有光標(biāo),活動(dòng)窗口光標(biāo)進(jìn)展閃爍。 運(yùn)運(yùn)用用實(shí)實(shí)例例 問(wèn)題描畫(huà)問(wèn)題描畫(huà)第第3 3章章 高級(jí)編程技術(shù)的實(shí)現(xiàn)高級(jí)編程技術(shù)的實(shí)現(xiàn)z顯示方式:文本方式顯示方式:文本方式首先用文本窗口函數(shù)window (int x1
20、, int y1, int x2, int y2)畫(huà)出兩個(gè)窗口,用textcolor (int color),textbackground (int color),clrscr (void)等進(jìn)展窗口屬性的設(shè)置。用tab鍵進(jìn)展兩個(gè)窗口間的循環(huán)切換,在每次切換前先調(diào)用gettext (int left, int top, int right, int bottom, void * buf)函數(shù)把當(dāng)前矩形窗口上的字符拷貝到由buf所指向的內(nèi)存中,在切換到另一個(gè)窗口后調(diào)用puttext (int left, int top, int right, int bottom, void * buf)把先前
21、存儲(chǔ)在該窗口buf所指向的內(nèi)存中的字符拷貝到當(dāng)前窗口中,并用gotoxy (int x, int y)把光標(biāo)移到原先所在位置,因此可以接著先前的文本繼續(xù)編輯。 運(yùn)運(yùn)用用實(shí)實(shí)例例 設(shè)計(jì)思想設(shè)計(jì)思想第第3 3章章 高級(jí)編程技術(shù)的實(shí)現(xiàn)高級(jí)編程技術(shù)的實(shí)現(xiàn)z顯示方式:文本方式顯示方式:文本方式運(yùn)運(yùn)用用實(shí)實(shí)例例 程序運(yùn)轉(zhuǎn)截圖程序運(yùn)轉(zhuǎn)截圖第第3 3章章 高級(jí)編程技術(shù)的實(shí)現(xiàn)高級(jí)編程技術(shù)的實(shí)現(xiàn)z顯示方式:顯示方式:圖形方式圖形方式圖形顯示方式可以滿足在屏幕上作圖的要求。在此方式下,屏幕顯示的單位是像素。屏幕顯示的像素大小分辨率可以經(jīng)過(guò)設(shè)置不同的顯示方式來(lái)改動(dòng)。像素在屏幕上的位置可由其所在的x,y坐標(biāo)來(lái)決議。此時(shí)
22、,屏幕的坐標(biāo)系統(tǒng)就象一個(gè)倒置的直角坐標(biāo)系。第第3 3章章 高級(jí)編程技術(shù)的實(shí)現(xiàn)高級(jí)編程技術(shù)的實(shí)現(xiàn)z顯示方式:圖形方式顯示方式:圖形方式方式設(shè)定方式設(shè)定圖形系統(tǒng)的初始化:圖形系統(tǒng)的初始化:用什么類(lèi)型的顯卡的驅(qū)動(dòng)程序用什么類(lèi)型的顯卡的驅(qū)動(dòng)程序采用什么方式的圖形方式采用什么方式的圖形方式適配器驅(qū)動(dòng)程序的尋覓途徑名。適配器驅(qū)動(dòng)程序的尋覓途徑名。留意:所用系統(tǒng)的卡一定要支持所選用的顯示方式留意:所用系統(tǒng)的卡一定要支持所選用的顯示方式,否那么將出錯(cuò)。,否那么將出錯(cuò)。第第3 3章章 高級(jí)編程技術(shù)的實(shí)現(xiàn)高級(jí)編程技術(shù)的實(shí)現(xiàn)z顯示方式:圖形方式顯示方式:圖形方式方式設(shè)定方式設(shè)定圖形系統(tǒng)的初始化函數(shù):圖形系統(tǒng)的初始化
23、函數(shù):void far initgraph(int far void far initgraph(int far * *pdriverpdriver,int far int far * *pmodepmode,char far char far * *ppath_for_driver)ppath_for_driver);enum graphics_driver DETECT,CGA,MCGA,EGA,EGA64,EGAMONO,IBM 8514,HERCMONO,ATT400,VGA,PC3270; 第第3 3章章 高級(jí)編程技術(shù)的實(shí)現(xiàn)高級(jí)編程技術(shù)的實(shí)現(xiàn)z顯示方式:圖形方式顯示方式:圖形方式方式
24、設(shè)定方式設(shè)定圖形系統(tǒng)的初始化函數(shù):圖形系統(tǒng)的初始化函數(shù):void far initgraph(int far void far initgraph(int far * *pdriverpdriver,int far int far * *pmodepmode,char far char far * *ppath_for_driver)ppath_for_driver);第第3 3章章 高級(jí)編程技術(shù)的實(shí)現(xiàn)高級(jí)編程技術(shù)的實(shí)現(xiàn)z顯示方式:圖形方式顯示方式:圖形方式方式設(shè)定方式設(shè)定圖形系統(tǒng)檢測(cè)函數(shù)圖形系統(tǒng)檢測(cè)函數(shù) :void far detectgraph(int far void far detec
25、tgraph(int far * *pdriverpdriver,int far int far * *pmode)pmode);完成對(duì)適配器的檢查并得到顯示器類(lèi)型號(hào)和相應(yīng)的最高分完成對(duì)適配器的檢查并得到顯示器類(lèi)型號(hào)和相應(yīng)的最高分辨率方式辨率方式 將graphdriver設(shè)成DETECT, initgraph()將調(diào)用detectgraph()自動(dòng)檢測(cè)所用顯卡類(lèi)型,并將相應(yīng)的驅(qū)動(dòng)程序裝入,并將其最高的顯示方式作為當(dāng)前顯示方式。 int graphdriver=DETECT,graphmode;initgraph(&graphdriver,&graphmode,); 第第3 3章
26、章 高級(jí)編程技術(shù)的實(shí)現(xiàn)高級(jí)編程技術(shù)的實(shí)現(xiàn)z顯示方式:圖形方式顯示方式:圖形方式方式設(shè)定方式設(shè)定清屏函數(shù):清屏函數(shù):畫(huà)圖前普通需去除屏幕,使得屏幕好像一張白紙,以畫(huà)圖前普通需去除屏幕,使得屏幕好像一張白紙,以畫(huà)最新最美的圖畫(huà)。畫(huà)最新最美的圖畫(huà)。void far cleardevice(void); 圖形系統(tǒng)的封鎖:圖形系統(tǒng)的封鎖:當(dāng)畫(huà)圖終了時(shí)可以經(jīng)過(guò)調(diào)用封鎖圖形系統(tǒng)的函數(shù):當(dāng)畫(huà)圖終了時(shí)可以經(jīng)過(guò)調(diào)用封鎖圖形系統(tǒng)的函數(shù): void far closegraph(void); 使顯示器恢復(fù)到調(diào)用使顯示器恢復(fù)到調(diào)用initgraph()函數(shù)之前的文本方式函數(shù)之前的文本方式。第第3 3章章 高級(jí)編程技術(shù)的
27、實(shí)現(xiàn)高級(jí)編程技術(shù)的實(shí)現(xiàn)z顯示方式:圖形方式顯示方式:圖形方式顏色設(shè)置顏色設(shè)置前風(fēng)光設(shè)置函數(shù):前風(fēng)光設(shè)置函數(shù):void far setcolor(int color); 背風(fēng)光設(shè)置函數(shù):背風(fēng)光設(shè)置函數(shù):void far setbkcolor(int color);第第3 3章章 高級(jí)編程技術(shù)的實(shí)現(xiàn)高級(jí)編程技術(shù)的實(shí)現(xiàn)z顯示方式:圖形方式顯示方式:圖形方式顏色設(shè)置顏色設(shè)置前風(fēng)光設(shè)置函數(shù):前風(fēng)光設(shè)置函數(shù):void far setcolor(int color); 背風(fēng)光設(shè)置函數(shù):背風(fēng)光設(shè)置函數(shù):void far setbkcolor(int color);第第3 3章章 高級(jí)編程技術(shù)的實(shí)現(xiàn)高級(jí)編程技術(shù)
28、的實(shí)現(xiàn)z顯示方式:圖形方式顯示方式:圖形方式顏色設(shè)置顏色設(shè)置CGA前風(fēng)光的取值:前風(fēng)光的取值:第第3 3章章 高級(jí)編程技術(shù)的實(shí)現(xiàn)高級(jí)編程技術(shù)的實(shí)現(xiàn)z顯示方式:圖形方式顯示方式:圖形方式顏色設(shè)置顏色設(shè)置CGA背風(fēng)光的取值:背風(fēng)光的取值:第第3 3章章 高級(jí)編程技術(shù)的實(shí)現(xiàn)高級(jí)編程技術(shù)的實(shí)現(xiàn)z顯示方式:圖形方式顯示方式:圖形方式顏色設(shè)置顏色設(shè)置EGA/VGA調(diào)色板:調(diào)色板: setcolor(color)時(shí)color的取值; 0號(hào)索引位置的顏色總是和背風(fēng)光一樣 ;16個(gè)索引號(hào)意味著同時(shí)最多可顯示16種不同的顏色64/256色選一第第3 3章章 高級(jí)編程技術(shù)的實(shí)現(xiàn)高級(jí)編程技術(shù)的實(shí)現(xiàn)z顯示方式:圖形方式
29、顯示方式:圖形方式顏色設(shè)置顏色設(shè)置EGA/VGA調(diào)色板:調(diào)色板:整體設(shè)置: void far setallpalette(struct palettetype far *palette);#define MAXCOLORS l5struct palattetype unsigned char size; signed char colorsMAXCOLORS+1;; 單色設(shè)置:?jiǎn)紊O(shè)置:voidfar setpalette(int index, int actual_color); 第第3 3章章 高級(jí)編程技術(shù)的實(shí)現(xiàn)高級(jí)編程技術(shù)的實(shí)現(xiàn)z顯示方式:圖形方式顯示方式:圖形方式顏色設(shè)置顏色設(shè)置EGA
30、/VGA規(guī)范色:規(guī)范色:第第3 3章章 高級(jí)編程技術(shù)的實(shí)現(xiàn)高級(jí)編程技術(shù)的實(shí)現(xiàn)z顯示方式:圖形方式顯示方式:圖形方式圖視口圖視口設(shè)置函數(shù):設(shè)置函數(shù):void far setviewport(int xl,int y1,int x2,int y2, clipflag); 其中其中(x1,y1)為圖視口的左上角所在的原屏幕物理坐標(biāo)為圖視口的左上角所在的原屏幕物理坐標(biāo),(x2,y2)為右下角所在的原屏幕物理坐標(biāo)。為右下角所在的原屏幕物理坐標(biāo)。clipflag參參數(shù)數(shù)clipflag假設(shè)為假設(shè)為0,那么超出圖視口的圖形部分仍將顯,那么超出圖視口的圖形部分仍將顯示出來(lái);否那么,超出圖視口的部分將被切除而不
31、顯示示出來(lái);否那么,超出圖視口的部分將被切除而不顯示。去除函數(shù):去除函數(shù):void far clearviewport(void)第第3 3章章 高級(jí)編程技術(shù)的實(shí)現(xiàn)高級(jí)編程技術(shù)的實(shí)現(xiàn)z顯示方式:圖形方式顯示方式:圖形方式文本輸出文本輸出當(dāng)前位置文本輸出函數(shù):當(dāng)前位置文本輸出函數(shù): void far outtext(char far *textstring); 定位文本輸出函數(shù):定位文本輸出函數(shù): void far outtextxy(int x,int y,char far *textstring);文本輸出字符串函數(shù)文本輸出字符串函數(shù) int sprintf(char *string, ch
32、ar *format, argument, );第第3 3章章 高級(jí)編程技術(shù)的實(shí)現(xiàn)高級(jí)編程技術(shù)的實(shí)現(xiàn)z顯示方式:圖形方式顯示方式:圖形方式文本輸出文本輸出 文本輸出位置函數(shù):文本輸出位置函數(shù):void far settextjustify(int horizvoid far settextjustify(int horiz,int int vert); vert); 第第3 3章章 高級(jí)編程技術(shù)的實(shí)現(xiàn)高級(jí)編程技術(shù)的實(shí)現(xiàn)z顯示方式:圖形方式顯示方式:圖形方式文本輸出文本輸出 定義文本字型函數(shù):定義文本字型函數(shù): void far settextstyle(int font void far se
33、ttextstyle(int font,int directionint direction,int char size)int char size); 第第3 3章章 高級(jí)編程技術(shù)的實(shí)現(xiàn)高級(jí)編程技術(shù)的實(shí)現(xiàn)#include main() int i,graphdriver,graphmode,size,page; char s30; graphdriver=DETECT; initgraph(&graphdriver,&graphmode,); cleardevice(); settextstyle(DEFAULT_FONT,HORIZ_DIR,2); settextjusti
34、fy(LEFT_TEXT,0); outtextxy(220,20,Defaut font); settextstyle(TRIPLEX_FONT,HORIZ_DIR, 2); settextjustify(LEFT_TEXT,0); outtextxy(220,50,Triplex font);運(yùn)運(yùn)用用實(shí)實(shí)例例 程序源代碼程序源代碼settextstyle(SMALL_FONT,HORIZ_DIR, 2);settextjustify(LEFT_TEXT,0);outtextxy(220,80,Smallfont);settextstyle(SANS_SERIF_FONT,HORIZ_DIR
35、,2);settextjustify(LEFT_TEXT,0);outtextxy(220,110,Sans serif font);settextstyle(GOTHIC_FONT,HORIZ_DIR, 2);settextjustify(LEFT_TEXT,0);outtextxy(220,140,gothic font);getch(); closegraph(); z顯示方式:圖形方式顯示方式:圖形方式文本輸出文本輸出第第3 3章章 高級(jí)編程技術(shù)的實(shí)現(xiàn)高級(jí)編程技術(shù)的實(shí)現(xiàn)運(yùn)運(yùn)用用實(shí)實(shí)例例 程序輸出程序輸出z顯示方式:圖形方式顯示方式:圖形方式文本輸出文本輸出 第第3章章 高級(jí)編程技術(shù)的實(shí)
36、現(xiàn)高級(jí)編程技術(shù)的實(shí)現(xiàn)主要內(nèi)容主要內(nèi)容操作手段顯示方式圖形繪制技術(shù)動(dòng)畫(huà)技術(shù)發(fā)聲技術(shù)漢字顯示技術(shù)圖像技術(shù)準(zhǔn)確的時(shí)間控制技術(shù) 第第3 3章章 高級(jí)編程技術(shù)的實(shí)現(xiàn)高級(jí)編程技術(shù)的實(shí)現(xiàn)z圖形繪制圖形繪制void far moveto(int x,int y);挪動(dòng)畫(huà)筆到指定的挪動(dòng)畫(huà)筆到指定的(x,y)位置,挪動(dòng)過(guò)程不畫(huà)。位置,挪動(dòng)過(guò)程不畫(huà)。void far moverel(int dx,int dy);畫(huà)筆從現(xiàn)行位置畫(huà)筆從現(xiàn)行位置(x,y)處移到一位置增量處處移到一位置增量處(x+dx,y+dx),挪動(dòng)過(guò)程不畫(huà):,挪動(dòng)過(guò)程不畫(huà):int far getx(void);得到當(dāng)前畫(huà)筆的得到當(dāng)前畫(huà)筆的x位置位置i
37、nt far gety(void);得到當(dāng)前畫(huà)筆的得到當(dāng)前畫(huà)筆的y位置位置:畫(huà)筆定位:畫(huà)筆定位 第第3 3章章 高級(jí)編程技術(shù)的實(shí)現(xiàn)高級(jí)編程技術(shù)的實(shí)現(xiàn)z圖形繪制圖形繪制 畫(huà)點(diǎn)函數(shù):畫(huà)點(diǎn)函數(shù): void far putpixel(int x,int y,int color);該函數(shù)表示在指定的該函數(shù)表示在指定的x,y位置畫(huà)一點(diǎn),點(diǎn)的顯示顏色位置畫(huà)一點(diǎn),點(diǎn)的顯示顏色由設(shè)置的由設(shè)置的color值決議。值決議。 int far getpixel(int x,int y);該函數(shù)與該函數(shù)與putpixel()相對(duì)應(yīng),它得到在相對(duì)應(yīng),它得到在(x,y)點(diǎn)位置上點(diǎn)位置上的像素的顏色值的像素的顏色值 :點(diǎn)和線:
38、點(diǎn)和線 第第3 3章章 高級(jí)編程技術(shù)的實(shí)現(xiàn)高級(jí)編程技術(shù)的實(shí)現(xiàn)z圖形繪制:圖形繪制: 點(diǎn)和線點(diǎn)和線 畫(huà)線函數(shù):畫(huà)線函數(shù):void far line(int x0,int y0,int x1,int y1);該函數(shù)從該函數(shù)從(x0,y0)點(diǎn)到點(diǎn)到(x1,y1)點(diǎn)畫(huà)不斷線。點(diǎn)畫(huà)不斷線。void far lineto(int x,int y);該函數(shù)將從現(xiàn)行畫(huà)筆位置到該函數(shù)將從現(xiàn)行畫(huà)筆位置到(x,y)點(diǎn)畫(huà)不斷線。點(diǎn)畫(huà)不斷線。void far linerel(int dx,int dy); 該函數(shù)將從現(xiàn)行畫(huà)筆位置該函數(shù)將從現(xiàn)行畫(huà)筆位置(x,y)到位置增量處到位置增量處 (x+dx,y+dy)畫(huà)不斷線。畫(huà)
39、不斷線。 第第3 3章章 高級(jí)編程技術(shù)的實(shí)現(xiàn)高級(jí)編程技術(shù)的實(shí)現(xiàn) 線類(lèi)型的設(shè)置:線類(lèi)型的設(shè)置:在確省的情況下,畫(huà)線函數(shù)畫(huà)出的線都是一個(gè)像素點(diǎn)在確省的情況下,畫(huà)線函數(shù)畫(huà)出的線都是一個(gè)像素點(diǎn)寬的細(xì)實(shí)線。也可以在畫(huà)線之前經(jīng)過(guò)函數(shù):寬的細(xì)實(shí)線。也可以在畫(huà)線之前經(jīng)過(guò)函數(shù): void far setlinestyle(int linestyle void far setlinestyle(int linestyle,unsigned upatternunsigned upattern,int thickness)int thickness); 定義線的類(lèi)型和粗細(xì)。定義線的類(lèi)型和粗細(xì)。 F 3 D 0setl
40、inestyle(4,0 xF3D0,1)設(shè)置的線型設(shè)置的線型 z圖形繪制:圖形繪制: 點(diǎn)和線點(diǎn)和線 第第3 3章章 高級(jí)編程技術(shù)的實(shí)現(xiàn)高級(jí)編程技術(shù)的實(shí)現(xiàn) BIOS的10H中斷擔(dān)任顯示器效力,該中斷的主要功能經(jīng)過(guò)對(duì)AH來(lái)設(shè)置: AH=00H,功能為設(shè)置顯示方式。此時(shí)經(jīng)過(guò)對(duì)AL進(jìn)展設(shè)置來(lái)設(shè)定顯示方式,如設(shè)置AL=13H,那么顯示方式設(shè)置為VGA的256色320200圖形顯示方式。 AH=0CH,功能為畫(huà)點(diǎn)。這時(shí)AL中設(shè)置的值為顏色號(hào),CX和DX的值決議畫(huà)點(diǎn)的位置坐標(biāo)。z圖形繪制:圖形繪制: 點(diǎn)和線點(diǎn)和線 利用利用BIOS調(diào)用調(diào)用第第3 3章章 高級(jí)編程技術(shù)的實(shí)現(xiàn)高級(jí)編程技術(shù)的實(shí)現(xiàn)#include
41、#include int main() int i,j; union REGS inreg,outreg; inreg.h.ah=0; /*置屏幕顯示方式*/ inreg.h.al=0 x13; /* 定義VGA256色320200圖形方式 */ int86(0 x10,&inreg,&outreg); /*調(diào)用中斷0 x10*/ for (i=0;i256;i+) for(j=0;j200;j+) inreg.h.ah=0 x0c;/*寫(xiě)點(diǎn)*/ 運(yùn)運(yùn)用用實(shí)實(shí)例例在屏幕上畫(huà)出顏色不同的在屏幕上畫(huà)出顏色不同的256256條直線的程序源代碼條直線的程序源代碼 inreg.h.al=
42、i; /*置顏色號(hào)*/ inreg.h.ch=0; /*決議畫(huà)點(diǎn)位置*/ inreg.h.cl=i; inreg.h.dh=0; inreg.h.dl=j; int86(0 x10,&inreg,&outreg); getch(); inreg.h.ah=0; inreg.h.al=2; /*前往到文本方式*/ int86(0 x10,&inreg,&outreg); z圖形繪制:圖形繪制: 點(diǎn)和線點(diǎn)和線 利用利用BIOS調(diào)調(diào)用用第第3 3章章 高級(jí)編程技術(shù)的實(shí)現(xiàn)高級(jí)編程技術(shù)的實(shí)現(xiàn)z圖形繪制圖形繪制 :矩形、圓和弧線:矩形、圓和弧線 畫(huà)矩形的函數(shù):畫(huà)矩形的函數(shù):
43、void far rectangle(int xl,int y1,int x2,int y2); 畫(huà)橢圓、圓和扇形圖函數(shù):畫(huà)橢圓、圓和扇形圖函數(shù): void ellipse(int x,int y,int stangle,int endangel, int xradius,int yradius); void far circle(int x,int y,int radius); void far arc(int x,int y,int stangle,int endangle, int radius);第第3 3章章 高級(jí)編程技術(shù)的實(shí)現(xiàn)高級(jí)編程技術(shù)的實(shí)現(xiàn)編寫(xiě)程序,運(yùn)用鼠標(biāo)進(jìn)展如下操作:按住鼠
44、標(biāo)器的恣意鍵并挪動(dòng),十字光標(biāo)將隨鼠標(biāo)而挪動(dòng),根據(jù)按鍵的不同采用不同的外形來(lái)畫(huà)出相應(yīng)的挪動(dòng)軌跡:當(dāng)僅按下左鍵時(shí)用圓圈;僅按下右鍵時(shí)用矩形;其它按鍵情況用線條。 運(yùn)運(yùn)用用實(shí)實(shí)例例 問(wèn)題描畫(huà)問(wèn)題描畫(huà)z圖形繪制圖形繪制第第3 3章章 高級(jí)編程技術(shù)的實(shí)現(xiàn)高級(jí)編程技術(shù)的實(shí)現(xiàn)結(jié)合鼠標(biāo)運(yùn)用方法和上述的圖形繪制函數(shù)來(lái)處理問(wèn)題。由于在Windows2000/XP下不支持INT 33的1號(hào)顯示鼠標(biāo)光標(biāo)功能,可以用畫(huà)線函數(shù)line()畫(huà)出一個(gè)十字形光標(biāo)。光標(biāo)的挪動(dòng)是經(jīng)過(guò)將原位置光標(biāo)用背風(fēng)光再畫(huà)而使其消逝,然后在新位置處重新畫(huà)一個(gè)光標(biāo),從而實(shí)現(xiàn)光標(biāo)挪動(dòng)的動(dòng)感。 運(yùn)運(yùn)用用實(shí)實(shí)例例 設(shè)計(jì)思想設(shè)計(jì)思想z圖形繪制圖形繪制第第3
45、 3章章 高級(jí)編程技術(shù)的實(shí)現(xiàn)高級(jí)編程技術(shù)的實(shí)現(xiàn)運(yùn)運(yùn)用用實(shí)實(shí)例例 程序運(yùn)轉(zhuǎn)截圖程序運(yùn)轉(zhuǎn)截圖z圖形繪制圖形繪制第第3 3章章 高級(jí)編程技術(shù)的實(shí)現(xiàn)高級(jí)編程技術(shù)的實(shí)現(xiàn)z圖形繪制:封鎖圖形的填色圖形繪制:封鎖圖形的填色 填充設(shè)置函數(shù)填充設(shè)置函數(shù) :void far setfillstyle(int patternvoid far setfillstyle(int pattern,int int color)color);該函數(shù)將用設(shè)定的該函數(shù)將用設(shè)定的colorcolor顏色和顏色和patternpattern圖方式圖方式對(duì)后面畫(huà)出的輪廓圖進(jìn)展填充,這些圖輪廓是對(duì)后面畫(huà)出的輪廓圖進(jìn)展填充,這些圖輪廓是由
46、待定函數(shù)畫(huà)出的。由待定函數(shù)畫(huà)出的。 第第3 3章章 高級(jí)編程技術(shù)的實(shí)現(xiàn)高級(jí)編程技術(shù)的實(shí)現(xiàn)z圖形繪制:封鎖圖形的填色圖形繪制:封鎖圖形的填色 填充設(shè)置函數(shù)填充設(shè)置函數(shù) :void far setfillstyle(int patternvoid far setfillstyle(int pattern,int int color)color)第第3 3章章 高級(jí)編程技術(shù)的實(shí)現(xiàn)高級(jí)編程技術(shù)的實(shí)現(xiàn)z圖形繪制:封鎖圖形的填色圖形繪制:封鎖圖形的填色 用戶(hù)自定義填充函數(shù):用戶(hù)自定義填充函數(shù): void far setfillpattern(char upattefn void far setfillpa
47、ttern(char upattefn,int color)int color);該函數(shù)設(shè)置用戶(hù)自定義可填充方式,以該函數(shù)設(shè)置用戶(hù)自定義可填充方式,以colorcolor指出指出的顏色對(duì)封鎖圖形進(jìn)展填充。參數(shù)的顏色對(duì)封鎖圖形進(jìn)展填充。參數(shù)upatternupattern是一是一個(gè)指向個(gè)指向8 8個(gè)字節(jié)存儲(chǔ)區(qū)的指針,這個(gè)字節(jié)存儲(chǔ)區(qū)的指針,這8 8個(gè)字節(jié)表示了個(gè)字節(jié)表示了一個(gè)一個(gè)8 88 8像素點(diǎn)陣組成的填充圖模,它是由用戶(hù)像素點(diǎn)陣組成的填充圖模,它是由用戶(hù)自定義的,用來(lái)對(duì)封鎖圖形填充。自定義的,用來(lái)對(duì)封鎖圖形填充。8 8個(gè)字節(jié)的圖模個(gè)字節(jié)的圖模是這樣構(gòu)成的:每個(gè)字節(jié)代表一行,而每個(gè)字節(jié)的是這樣構(gòu)
48、成的:每個(gè)字節(jié)代表一行,而每個(gè)字節(jié)的每一個(gè)二進(jìn)制位代表該行的對(duì)應(yīng)列上的像素。是每一個(gè)二進(jìn)制位代表該行的對(duì)應(yīng)列上的像素。是1 1,那么用,那么用colorcolor顯示,是顯示,是0 0那么不顯示。那么不顯示。 第第3 3章章 高級(jí)編程技術(shù)的實(shí)現(xiàn)高級(jí)編程技術(shù)的實(shí)現(xiàn)z圖形繪制:封鎖圖形的填色圖形繪制:封鎖圖形的填色 得到目前的填充方式和顏色的函數(shù)得到目前的填充方式和顏色的函數(shù) : void far fillsettings(struct void far fillsettings(struct fillsettingstype far fillsettingstype far * *fillinf
49、o); fillinfo); void far getfillpattern(char void far getfillpattern(char * *upattern)upattern); 第第3 3章章 高級(jí)編程技術(shù)的實(shí)現(xiàn)高級(jí)編程技術(shù)的實(shí)現(xiàn)z圖形繪制:封鎖圖形的填色圖形繪制:封鎖圖形的填色 可填充的根本圖形函數(shù):可填充的根本圖形函數(shù): (這些函數(shù)繪制的圖形,將根據(jù)事先用這些函數(shù)繪制的圖形,將根據(jù)事先用setfillstyle函數(shù)設(shè)函數(shù)設(shè)置的填充方式和顏色,或按缺省方式進(jìn)展填充置的填充方式和顏色,或按缺省方式進(jìn)展填充 ) void bar(int x1,int y1,int x2,int y
50、2); void far pieslice(int x,int y,int stangle,int endangle,int radius); void far bar3d(int x1,int y1,int x2,int y2,int depth,int topflag);void far sector(int x,int y,int stangle,int endang1e,int xradius,int yradius);void far fillellipse(int x,int y,int xradius,int yradius); void far fillpoly(int num
51、points,int far polypoints);第第3 3章章 高級(jí)編程技術(shù)的實(shí)現(xiàn)高級(jí)編程技術(shù)的實(shí)現(xiàn)z圖形繪制:封鎖圖形的填色圖形繪制:封鎖圖形的填色 可對(duì)恣意封鎖圖形填充的函數(shù)可對(duì)恣意封鎖圖形填充的函數(shù) : void far floodfill(int x void far floodfill(int x,int yint y,int border)int border); 該函數(shù)將對(duì)任一封鎖圖形進(jìn)展填充,其顏色和方該函數(shù)將對(duì)任一封鎖圖形進(jìn)展填充,其顏色和方式將由設(shè)定的或缺省的圖模與顏色決議。其中參數(shù)式將由設(shè)定的或缺省的圖模與顏色決議。其中參數(shù)(x(x,y)y)為封鎖圖形中的任一點(diǎn),為
52、封鎖圖形中的任一點(diǎn),borderborder是封鎖圖形的邊框顏是封鎖圖形的邊框顏色。編程時(shí)該函數(shù)位于畫(huà)封鎖圖形即要填充的圖形色。編程時(shí)該函數(shù)位于畫(huà)封鎖圖形即要填充的圖形的代碼之后。的代碼之后。 第第3 3章章 高級(jí)編程技術(shù)的實(shí)現(xiàn)高級(jí)編程技術(shù)的實(shí)現(xiàn)#include main() int i, graphdriver,graphmode,size,page; char s30; graphdriver=DETECT; initgraph(&graphdriver,&graphmode,); cleardevice(); setbkcolor(BLUE); setviewport(4
53、0,40,600,440,1); /*開(kāi)圖視口*/ setfillstyle(1,2); setcolor(YELLOW); rectangle(0,0,560,400); floodfill(50,50,14); /*用綠色填充矩形框*/ rectangle(20,20,540,380); setfillstyle(1,13); floodfill(2l,300,14); /*用淡洋紅色填充矩形框*/ setcolor(BLACK); 運(yùn)運(yùn)用用實(shí)實(shí)例例 程序源代碼程序源代碼 settextstyle(1,0,6); /*設(shè)置字形方向,尺寸*/ outtextxy(100,60,Welcom
54、You); setviewport(100,200,540,380,0); setcolor(14); setfillstyle(1,12); rectangle(20,20,420,120); settextstyle(2,0,9); floodfill(21,100,14); /*用深藍(lán)色填充*/ sprintf(s,“Lets study Turbo C); setcolor(YELLOW); outtextxy(60,40, s);/*用黃色顯示*/ setcolor(1); settextstyle(4,0,3); outtextxy(110,80,s); getch(); clos
55、egraph(); z圖形繪制圖形繪制第第3 3章章 高級(jí)編程技術(shù)的實(shí)現(xiàn)高級(jí)編程技術(shù)的實(shí)現(xiàn)運(yùn)運(yùn)用用實(shí)實(shí)例例 程序輸出程序輸出z圖形繪制圖形繪制 第第3章章 高級(jí)編程技術(shù)的實(shí)現(xiàn)高級(jí)編程技術(shù)的實(shí)現(xiàn)主要內(nèi)容主要內(nèi)容操作手段顯示方式圖形繪制技術(shù)圖像技術(shù)動(dòng)畫(huà)技術(shù)發(fā)聲技術(shù)漢字顯示技術(shù)準(zhǔn)確的時(shí)間控制技術(shù) 第第3 3章章 高級(jí)編程技術(shù)的實(shí)現(xiàn)高級(jí)編程技術(shù)的實(shí)現(xiàn)z圖像技術(shù)圖像技術(shù):圖像的二種來(lái)源圖像的二種來(lái)源1屏幕圖像:在圖形方式下所繪圖形構(gòu)成的像素點(diǎn)圖像 。圖像數(shù)據(jù)直接存儲(chǔ)在VRAM中,VRAM中某地址單元存放的數(shù)就表示了相應(yīng)屏幕上某行和列上的像素及其顏色值 。2圖像文件:圖像數(shù)據(jù)以一定的格式存儲(chǔ)在文件中。需求
56、有專(zhuān)門(mén)的軟件來(lái)支持,或本人編寫(xiě)程序來(lái)讀取、顯示和生成某種格式的圖像文件。首先必需求了解某種圖像文件的格式。第第3 3章章 高級(jí)編程技術(shù)的實(shí)現(xiàn)高級(jí)編程技術(shù)的實(shí)現(xiàn)z圖像技術(shù):屏幕圖像與圖像技術(shù):屏幕圖像與VRAM直接寫(xiě)屏:在圖形方式下將圖像數(shù)據(jù)直接寫(xiě)入VRAM的過(guò)程,即圖像顯示過(guò)程。直接寫(xiě)屏是最快的圖像顯示方法。第第3 3章章 高級(jí)編程技術(shù)的實(shí)現(xiàn)高級(jí)編程技術(shù)的實(shí)現(xiàn)z圖像技術(shù):圖像技術(shù):VRAM與系統(tǒng)存儲(chǔ)器的對(duì)應(yīng)關(guān)系與系統(tǒng)存儲(chǔ)器的對(duì)應(yīng)關(guān)系q CGA的VRAM對(duì)應(yīng)的內(nèi)存地址開(kāi)場(chǎng)于B8000H,VGA、EGA的開(kāi)場(chǎng)于A0000H。q對(duì)CGA,VRAM僅有16K字節(jié);對(duì)VGA和EGA,VRAM可達(dá)256K
57、字節(jié),它分成獨(dú)立的4個(gè)64K字節(jié)部分,這樣的每個(gè)部分稱(chēng)為一個(gè)位面或頁(yè)面編號(hào)0-3,它們共同占有一塊內(nèi)存空間,即用同一的64K個(gè)地址。相應(yīng)內(nèi)存的每個(gè)地址實(shí)踐上代表VRAM4個(gè)位面上相并列的4個(gè)字節(jié)。q 對(duì)于SVGA,由于它要存取更高分辨率或更多顏色的數(shù)據(jù),普通都至少擁有512K以上的VRAM,但其所占用的內(nèi)存地址仍大都是64K,因此也需求劃分許多頁(yè)面,對(duì)應(yīng)到A0000H或其它的視頻內(nèi)存地址上。 第第3 3章章 高級(jí)編程技術(shù)的實(shí)現(xiàn)高級(jí)編程技術(shù)的實(shí)現(xiàn)z圖像技術(shù):屏幕圖像的允許讀寫(xiě)過(guò)程圖像技術(shù):屏幕圖像的允許讀寫(xiě)過(guò)程q允許讀的過(guò)程是:首先經(jīng)過(guò)索引存放器接口地址為0 x3ce選擇讀位面選擇存放器其索引號(hào)
58、為4,然后經(jīng)過(guò)讀位面選擇存放器接口地址0 x3cf選擇位面號(hào)。相應(yīng)的代碼為:qoutportb(0 x3ce, 4); /*將索引號(hào)4送索引存放器,選擇讀位面選擇存放器*q/outportb(0 x3cf, n); /*將選擇的位面號(hào)n送讀位面選擇存放器,允許該位面可讀*/第第3 3章章 高級(jí)編程技術(shù)的實(shí)現(xiàn)高級(jí)編程技術(shù)的實(shí)現(xiàn)z圖像技術(shù):屏幕圖像的讀寫(xiě)過(guò)程圖像技術(shù):屏幕圖像的讀寫(xiě)過(guò)程q允許寫(xiě)的過(guò)程是:首先經(jīng)過(guò)索引存放器接口地址為0 x3c4選擇位面寫(xiě)允許存放器索引號(hào)為2,然后經(jīng)過(guò)接口地址0 x3c5選擇位面號(hào)。相應(yīng)的代碼為:qoutportb(0 x3c4, 2); /*將索引號(hào)2送索引存放器,
59、選擇位面寫(xiě)允許存放器*/qoutportb(0 x3c5, k); /*送位面號(hào)至位面寫(xiě)允許存放器,允許該位面可寫(xiě)*/第第3 3章章 高級(jí)編程技術(shù)的實(shí)現(xiàn)高級(jí)編程技術(shù)的實(shí)現(xiàn)z圖像技術(shù):屏幕圖像數(shù)據(jù)在圖像技術(shù):屏幕圖像數(shù)據(jù)在VRAM中存放格式中存放格式 qCGA的4色320200的方式,視頻內(nèi)存起始地址B0000H。屏幕上顯示的像素點(diǎn)從左到右,從上到下依次存在VRAM從0號(hào)地址開(kāi)場(chǎng)的延續(xù)地址中,每個(gè)像素占2位,VRAM每個(gè)字節(jié)存放四個(gè)像素點(diǎn)。q特殊的地方:屏幕上顯示的偶行像素存在16KVRAM的上半部,而奇行存在下半部。從系統(tǒng)地址看,上半部開(kāi)場(chǎng)于B800:0000,下半部開(kāi)場(chǎng)于B800:1000。
60、第第3 3章章 高級(jí)編程技術(shù)的實(shí)現(xiàn)高級(jí)編程技術(shù)的實(shí)現(xiàn)z圖像技術(shù):屏幕圖像數(shù)據(jù)在圖像技術(shù):屏幕圖像數(shù)據(jù)在VRAM中存放格式中存放格式 qVGA視頻內(nèi)存起始地址A0000H,在16色640480方式下采用位面對(duì)應(yīng)方式,視頻內(nèi)存地址上每一個(gè)字節(jié)代表8個(gè)像素,每一位又可對(duì)應(yīng)到位面中同樣位置的4位上4位的組合表示16色之一,因此又稱(chēng)位面為顏色位面。q在屏幕上繪出一個(gè)點(diǎn)時(shí),就必需將數(shù)據(jù)分別存放到四個(gè)位面中對(duì)應(yīng)的位上。第第3 3章章 高級(jí)編程技術(shù)的實(shí)現(xiàn)高級(jí)編程技術(shù)的實(shí)現(xiàn)z圖像技術(shù):屏幕圖像數(shù)據(jù)在圖像技術(shù):屏幕圖像數(shù)據(jù)在VRAM中存放格式中存放格式 q在256色320200方式下采用的是線性對(duì)應(yīng)的方法SVGA的一切256色和真彩都是用這種方法。q線性對(duì)應(yīng)將屏幕上每一點(diǎn)與視頻內(nèi)存地址按順序一一對(duì)應(yīng)起來(lái),一個(gè)點(diǎn)對(duì)應(yīng)一個(gè)字節(jié),這樣做的益處是:這種對(duì)應(yīng)方式比位面對(duì)應(yīng)方式簡(jiǎn)單多了,由于只需直接對(duì)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 公司簽書(shū)面合同范例
- 買(mǎi)樓房裝修合同范例
- 中央空調(diào)拆裝安裝合同范例
- 90套建筑合同范例
- 借款人轉(zhuǎn)讓合同范例
- 代理公司投資合同范例
- 產(chǎn)品網(wǎng)絡(luò)推廣合作合同范例
- 買(mǎi)房雙合同范例
- 劇場(chǎng)餐廳租賃合同范例
- 俱樂(lè)部線上合同范例英文
- 2024年城市軌道交通行車(chē)值班員(三級(jí))考試題庫(kù)匯總(附答案)
- 老藥新用與用藥創(chuàng)新趨勢(shì)
- 特種作業(yè)人員管理規(guī)定
- 安全管理之雙重預(yù)防機(jī)制
- 《銳器傷應(yīng)急處理》課件
- 建筑工程趕工補(bǔ)償費(fèi)用計(jì)算表
- 2024屆陜西省西安市西北工業(yè)大學(xué)高考語(yǔ)文一模試卷含解析
- 2024年興湘集團(tuán)全資子公司招聘筆試參考題庫(kù)含答案解析
- 第十七課 《虛擬與現(xiàn)實(shí)》(課件)2023-2024學(xué)年北師大版(2013)初中心理健康七年級(jí)上冊(cè)
- GB/T 15558.4-2023燃?xì)庥寐竦鼐垡蚁?PE)管道系統(tǒng)第4部分:閥門(mén)
- 硬件設(shè)計(jì)評(píng)審Checklist(含器件原理圖堆疊布局PCB-checklist)
評(píng)論
0/150
提交評(píng)論