第10章C語言屏幕操作函數(shù)及應(yīng)用_第1頁
第10章C語言屏幕操作函數(shù)及應(yīng)用_第2頁
第10章C語言屏幕操作函數(shù)及應(yīng)用_第3頁
第10章C語言屏幕操作函數(shù)及應(yīng)用_第4頁
第10章C語言屏幕操作函數(shù)及應(yīng)用_第5頁
已閱讀5頁,還剩46頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

C語言屏幕操作函數(shù)及應(yīng)用第10章字符方式下的屏幕編程圖形方式下的屏幕編程本章要點(diǎn)10.1字符屏幕操作函數(shù)第10章顯示器有兩種工作方式,文本方式和圖形方式。缺省顯示為文本方式。在文本方式下,整個(gè)屏幕就像稿紙一樣被劃分成一個(gè)個(gè)大小相等的單元,每單元只能顯示一個(gè)字符。屏幕最常見的劃分標(biāo)準(zhǔn)是25行*80列。在這種方式下,屏幕左上角坐標(biāo)為(0,0),右下角坐標(biāo)為(79,24),顯示器的坐標(biāo)系如圖10-1所示。TurboC以函數(shù)方式提供對屏幕的操縱和控制,字符屏幕函數(shù)主要用于設(shè)定文本窗口的大小、顏色、內(nèi)容的清除和輸入、輸出等。10.1字符屏幕操作函數(shù)第10章文本窗口在屏幕上是一個(gè)矩形區(qū)域,其大小和位置由其左上角和右下角的坐標(biāo)決定。函數(shù)的定義格式為:voidwindow(intx1,inty1,intx2,inty2);參數(shù)(x1,y1)和(x2,y2)分別為窗口的左上角和右下角的坐標(biāo),x代表列坐標(biāo),y代表行坐標(biāo)。例如,定義一個(gè)窗口,左上角坐標(biāo)為(31,4),右下角坐標(biāo)為(60,23)。函數(shù)的調(diào)用格式為:window(31,4,60,23);注:該函數(shù)原型在conio.h中定義。10.1.1

定義文本窗口10.1字符屏幕操作函數(shù)第10章文本窗口的顏色包括字符顏色和背景顏色,設(shè)置所用的函數(shù)是:設(shè)置背景顏色:voidtextbackground(intcolor);設(shè)置字符顏色:voidtextcolor(intcolor);表10-1窗口顏色列表10.1.2.設(shè)置文本窗口顏色符號常數(shù)數(shù)值顏色字符/背景符號常數(shù)數(shù)值顏色字符/背景BLACK0黑均可LIGHTBLUE9淡藍(lán)字符BLUE1藍(lán)均可LIGHTGREEN10淡綠字符GREEN2綠均可LIGHTCYAN11淡青字符CYAN3青均可LIGHTRED12淡紅字符RED4紅均可LIGHTMAGENTA13淡洋紅字符MAGENTA5洋紅均可YELLOW14黃字符BROWN6棕均可WHITE15白字符LIGHTGRAY7淡灰均可BLINK128閃爍字符DARKGRAY8深灰字符10.1字符屏幕操作函數(shù)第10章【例10.1】利用藍(lán)、綠、青、紅、洋紅、棕、淡灰為背景色,在屏幕上畫出7個(gè)大小為20列,10行的窗口,顯示效果如圖。10.1.2.設(shè)置文本窗口顏色圖10-2文本狀態(tài)下多窗口的運(yùn)行效果10.1字符屏幕操作函數(shù)第10章#include<conio.h>main(){inti;textbackground(0);/*設(shè)置背景顏色為黑色*/clrscr(); /*以黑色清除屏幕*/for(i=1;i<8;i++){window(21+i*5,5+i,40+i*5,14+i); /*定義窗口*/textbackground(i); /*設(shè)置背景顏色為i對應(yīng)的值*/clrscr(); /*窗口背景變?yōu)閕對應(yīng)的顏色*/textcolor(15-i); /*在窗口中定義字符的顏色*/cputs("Windows-"); /*輸出Windows-*/putch(72-i); /*分別輸出ABCDEFG*/}getch();}10.1.2.設(shè)置文本窗口顏色10.1字符屏幕操作函數(shù)第10章1.窗口內(nèi)文本的輸出函數(shù):(1)intcprintf("格式化字符串",<變量表>);功能:按照“格式化字符串”的格式輸出“變量表”中對應(yīng)的變量。(2)intcputs(char*string);功能:在當(dāng)前位置輸出字符串string。(3)intputch(intch);功能:在當(dāng)前位置輸出一個(gè)字符ch。10.1.3

窗口內(nèi)的文本輸入輸出和其他屏幕操作函數(shù)10.1字符屏幕操作函數(shù)第10章2.窗口內(nèi)文本的輸入函數(shù)及其他屏幕操作函數(shù)(1)intgetch(void);功能:從鍵盤上輸入一個(gè)字符。(2)voidclrscr();功能:用背景色清除當(dāng)前窗口中的內(nèi)容,光標(biāo)定位在窗口的左上角處。文本方式的優(yōu)點(diǎn)是:占用的內(nèi)存空間少,程序設(shè)計(jì)相對簡單。10.1.3

窗口內(nèi)的文本輸入輸出和其他屏幕操作函數(shù)10.2

TurboC的圖形與動畫處理第10章1.像素與坐標(biāo)文本方式下可訪問的最小單位是字符;圖形方式下最小單位是像素(又稱為點(diǎn)陣)。對于顯示器來說,它支持的像素個(gè)數(shù)越多,顯示器的分辨率就越高,這樣顯示的圖形就越細(xì)膩、清晰。常使用的顯示器分辨率點(diǎn)陣大小為640×480(更高的分辨率TurboC不支持)。像素在屏幕上的位置由其所在的坐標(biāo)(x,y)決定。圖形方式與文本方式顯示器的坐標(biāo)系相同(如圖10-1)。屏幕左上角為坐標(biāo)原點(diǎn)(0,0),以x代表水平方向的坐標(biāo)(從左到右),y代表垂直方向的坐標(biāo)(從上到下),X軸水平向右增加,Y軸是垂直向下增加。例如,分辨率為640*480的屏幕,其坐標(biāo)范圍為(0,0)到(639,479)。在圖形方式下,字符和圖形都以像素方式顯示。用戶可以利用像素點(diǎn)繪制各種各樣的圖形。10.2.1

計(jì)算機(jī)的顯示系統(tǒng)10.2

TurboC的圖形與動畫處理第10章2.顏色我們把計(jì)算機(jī)屏幕同時(shí)可以顯示的顏色組成一個(gè)顏色組,這就是一個(gè)調(diào)色板。比如VGA顯示標(biāo)準(zhǔn)的調(diào)色板有16種顏色,這16種顏色是從64種(EGA)或256種(VGA)顏色中選出來的。注意:在TurboC圖形方式下,屏幕的分辨率默認(rèn)為640×480,16種顏色可用。10.2.1

計(jì)算機(jī)的顯示系統(tǒng)10.2

TurboC的圖形與動畫處理第10章TurboC提供的圖形函數(shù),按功能可分為圖形系統(tǒng)控制函數(shù)、屏幕管理函數(shù)、基本繪圖函數(shù)、填充圖形函數(shù)、圖形的保存與恢復(fù)函數(shù)、圖形方式下的文本輸出函數(shù)等幾類。在使用這些函數(shù)時(shí),必須在程序的開頭寫上文件包含命令:#include<graphics.h>1.圖形系統(tǒng)控制函數(shù)計(jì)算機(jī)的顯示系統(tǒng)一般(默認(rèn))情況下,工作在80列×25行的文本方式。因此,在使用圖形函數(shù)之前,必須把顯示系統(tǒng)設(shè)置為圖形工作方式。同樣,在圖形程序結(jié)束時(shí),應(yīng)使顯示系統(tǒng)恢復(fù)到原來的文本工作方式。10.2.2

TurboC圖形函數(shù)10.2

TurboC的圖形與動畫處理第10章

(1)圖形模式初始化函數(shù)格式:initgraph(&gdriver,&gmode,path);功能:從指定的路徑path中裝入由driver指定的顯示驅(qū)動程序,并采用由mode指定的圖形方式初始化圖形系統(tǒng)。其中,參數(shù)driver可取的值是0到10之間的整數(shù)或相應(yīng)的符號名,用于指定所用適配器的驅(qū)動程序。如表10-2:10.2.2

TurboC圖形函數(shù)符號名數(shù)值符號名數(shù)值符號名數(shù)值DETECT0CGA1MCGA2EGA3EGA644EGAMONO5IBM85146HERCMONO7ATT4008VGA9PC32701010.2

TurboC的圖形與動畫處理第10章

(1)圖形模式初始化函數(shù)格式:initgraph(&gdriver,&gmode,path);功能:從指定的路徑path中裝入由driver指定的顯示驅(qū)動程序,并采用由mode指定的圖形方式初始化圖形系統(tǒng)。其中,參數(shù)driver可取的值是0到10之間的整數(shù)或相應(yīng)的符號名,用于指定所用適配器的驅(qū)動程序。如表10-2:10.2.2

TurboC圖形函數(shù)符號名數(shù)值符號名數(shù)值符號名數(shù)值DETECT0CGA1MCGA2EGA3EGA644EGAMONO5IBM85146HERCMONO7ATT4008VGA9PC32701010.2

TurboC的圖形與動畫處理第10章10.2.2

TurboC圖形函數(shù)驅(qū)動程序顯示模式值分辨率顯示模式值分辨率EGAEGALO0640*200EGAHI1640*350EGAMONOEGAMONOHI0640*350VGAVGALO0640*200VGAHI2640*480VGAMED1640*350IBM8514IBM8514LO0640*480IBM8514HI11024*76810.2

TurboC的圖形與動畫處理第10章參數(shù)path指明圖形驅(qū)動程序所在的路徑。當(dāng)path字符串為空時(shí),表示在當(dāng)前目錄下。從該函數(shù)的參數(shù)中可以知道,初始化圖形系統(tǒng)有以下兩種方式:①自動進(jìn)行硬件測試并進(jìn)行圖形初始化的程序。#include<graphics.h>main(){intgdriver=DETECT;/*自動檢測硬件*/intgmode;/*模式gmode不必指定值*/initgraph(&gdriver,&gmode,"");/*圖形初始化,path為空時(shí),表示在當(dāng)前目錄下*/}10.2.2

TurboC圖形函數(shù)10.2

TurboC的圖形與動畫處理第10章②若已知圖形適配器為VGA時(shí),想采用640×480的高分辨率模式VGAHI,則圖形初始化部分可寫成:intgdriver=VGA;intgmode=VGAHI;initgraph(&gdriver,&mode,"C:\\TC");“C:\\TC”表示圖形驅(qū)動程序在C盤TC目錄下,注意路徑中的”\”必須寫成”\\”。10.2.2

TurboC圖形函數(shù)10.2

TurboC的圖形與動畫處理第10章(2)關(guān)閉圖形方式函數(shù)closegraph()格式:closegraph();功能:釋放圖形系統(tǒng)所占的內(nèi)存,關(guān)閉圖形工作方式,并返回到文本方式下。(3)恢復(fù)原工作方式函數(shù):restorecrtmode();功能:不關(guān)閉圖形系統(tǒng),回到原來所設(shè)置模式,同時(shí)清屏。該函數(shù)經(jīng)常和設(shè)置圖形工作模式函數(shù)setgraphmode交互使用,使顯示器在圖形和文本工作模式間切換。10.2.2

TurboC圖形函數(shù)10.2

TurboC的圖形與動畫處理第10章

2.屏幕管理函數(shù)

此類函數(shù)用于設(shè)置繪圖時(shí)使用的顏色和設(shè)置窗口(視區(qū))。

(1)設(shè)置前景色函數(shù)setcolor()

格式:setcolor(color);

功能:設(shè)置下次繪圖時(shí)使用的顏色為color指定的顏色值(即設(shè)置畫筆的顏色)。

參數(shù)color的取值范圍為0~15,color也可以是顏色值對應(yīng)的符號常量。

調(diào)用此函數(shù)后,此顏色立即生效,并保持到下一次調(diào)用它改變顏色為止。表10-4列出常用的EGA/VGA方式下可用的顏色值。10.2.2

TurboC圖形函數(shù)10.2

TurboC的圖形與動畫處理第10章10.2.2

TurboC圖形函數(shù)顏色值顏色符號常量顏色值顏色符號常量0黑BLACK8淡灰DARKGRAY1藍(lán)BLUE9淡藍(lán)LIGHTBLUE2綠GREEN10淡綠LIGHTGREEN3青CYAN11淡青LIGHTCYAN4紅RED12淡紅LIGHTRED5洋紅MAGENTA13淡洋紅LIGHTMAGENTA6棕BROWN14黃YELLOW7淡灰LIGHTGRAY15白WHITE10.2

TurboC的圖形與動畫處理第10章

(2)設(shè)置背景色函數(shù)setbkcolor()

格式:setbkcolor(color);

功能:用于設(shè)置后面繪圖時(shí)的背景顏色。

參數(shù)color的含義和取值范圍與上面setcolor()函數(shù)中的color相同。

如果改變了調(diào)色板或圖形方式,則表10-4中的色彩就可能不對應(yīng)實(shí)際的顏色。

(3)清屏函數(shù)cleardevice()

格式:cleardevice();

功能:清除整個(gè)屏幕圖形,并將當(dāng)前光標(biāo)點(diǎn)重新設(shè)置在原點(diǎn)(0,0)處。

說明:

圖形方式下雖然也存在一個(gè)當(dāng)前光標(biāo)位置,但卻看不到。如果用戶想知道當(dāng)前點(diǎn)的實(shí)際位置,可以使用函數(shù)getx()和gety()得到當(dāng)前點(diǎn)的兩個(gè)坐標(biāo)值。10.2.2

TurboC圖形函數(shù)10.2

TurboC的圖形與動畫處理第10章

(4)設(shè)置視圖區(qū)函數(shù)setviewport()

格式:setviewport(left,top,right,bottom,clip);

功能:在屏幕上開辟一個(gè)區(qū)域,建立一個(gè)視圖區(qū)(類似于窗口,但它沒有明確的可看到的邊界),用于繪圖。

參數(shù)都是整數(shù),其中,(left,top)為視圖區(qū)左上角的坐標(biāo),(right,bottom)是視圖區(qū)右下角的坐標(biāo),clip為裁剪狀態(tài)參數(shù)。若clip為1,則表示在視圖中進(jìn)行的繪圖操作,超過視圖部分將自動被裁剪掉;如果是0,則不裁剪。

調(diào)用此函數(shù)后,后面所有的輸出坐標(biāo)都是相對于該窗口(視圖區(qū))的,即窗口的左上角是坐標(biāo)的原點(diǎn)(0,0),與屏幕上的坐標(biāo)無關(guān)。10.2.2

TurboC圖形函數(shù)10.2

TurboC的圖形與動畫處理第10章

(4)設(shè)置視圖區(qū)函數(shù)setviewport()

格式:setviewport(left,top,right,bottom,clip);

功能:在屏幕上開辟一個(gè)區(qū)域,建立一個(gè)視圖區(qū)(類似于窗口,但它沒有明確的可看到的邊界),用于繪圖。

(5)清除視圖區(qū)函數(shù)clearviewport()

格式:clearviewport();

功能:清除當(dāng)前視圖區(qū)及其中的圖形,并將當(dāng)前點(diǎn)置于屏幕坐標(biāo)原點(diǎn)(0,0)處。10.2.2

TurboC圖形函數(shù)10.2

TurboC的圖形與動畫處理第10章

3.時(shí)間控制函數(shù)

此類函數(shù)用于控制繪圖動作之間的間隔,一般用此類函數(shù)來實(shí)現(xiàn)動畫效果。

(1)系統(tǒng)暫停執(zhí)行函數(shù)delay()

格式:delay(time);

功能:系統(tǒng)暫停執(zhí)行time指定的時(shí)間。

time的單位為毫秒,最大值為65535,不能為負(fù)數(shù)。

(2)系統(tǒng)掛起函數(shù)sleep()

格式:sleep(time);

功能:系統(tǒng)掛起time指定的時(shí)間。

time的單位為秒,最大值65535,不能為負(fù)數(shù)。10.2.2

TurboC圖形函數(shù)10.2

TurboC的圖形與動畫處理第10章

本節(jié)介紹畫點(diǎn)、畫線以及填充等常用函數(shù)。用繪圖函數(shù)畫圖時(shí),使用當(dāng)前的屏幕坐標(biāo)(也可能是視圖區(qū)的坐標(biāo))。在使用各種函數(shù)繪圖前,一般要先設(shè)置好前景色、背景色、畫筆樣式等參數(shù)。

1.點(diǎn)類函數(shù)

(1)畫點(diǎn)函數(shù)putpixel()

格式:putpixel(x,y,color);

功能:在指定坐標(biāo)(x,y)處以指定的顏色color畫一個(gè)點(diǎn)。三個(gè)參數(shù)均是整數(shù)。

(2)取某點(diǎn)顏色函數(shù)getpixel()

格式:getpixel(x,y);

功能:以整數(shù)形式返回坐標(biāo)(x,y)處點(diǎn)的顏色值。10.2.3

基本繪圖函數(shù)10.2

TurboC的圖形與動畫處理第10章

(3)移動當(dāng)前點(diǎn)函數(shù)moveto()

格式:moveto(x,y);

功能:將當(dāng)前點(diǎn)位置移動到(x,y)處。此函數(shù)只改變當(dāng)前點(diǎn)位置,不畫線。x為橫坐標(biāo),y為縱坐標(biāo)。

兩個(gè)參數(shù)均是整數(shù),而且,它們的可選值范圍是隨著圖形方式的變化而變化的。若想得到當(dāng)前圖形方式下可用的最大坐標(biāo)值,可分別使用getmaxx()和getmaxy()函數(shù)。

(4)相對移動當(dāng)前點(diǎn)函數(shù)moverel()

格式:moverel(dx,dy);

功能:將當(dāng)前點(diǎn)的位置相對移動(dx,dy)個(gè)點(diǎn)。此函數(shù)也是只移動點(diǎn),不畫線。兩個(gè)參數(shù)分別是屏幕坐標(biāo)x方向和y方向的增量,可正可負(fù)。10.2.3

基本繪圖函數(shù)10.2

TurboC的圖形與動畫處理第10章【例10.2】在屏幕上以藍(lán)、綠兩種顏色交替畫點(diǎn)。#include<graphics.h>main(){

intgdriver=VGA;

/*裝入VGA驅(qū)動程序*/

intgmode=VGAHI;

/*置顯示模式為VGAHI*/

intx;

initgraph(&gdriver,&gmode,“”);

/*初始化屏幕*/

cleardevice();

/*清屏*/

for(x=20;x<=300;x+=16)

{

putpixel(x,20,1);

/*以藍(lán)色畫點(diǎn)*/

putpixel(x+4,20,2);

/*以綠色畫點(diǎn)*/

}

getch();

closegraph();

/*關(guān)閉圖形模式*/}10.2.3

基本繪圖函數(shù)10.2

TurboC的圖形與動畫處理第10章

2.畫線函數(shù)

(1)設(shè)置畫線模式函數(shù)setlinestyle()

格式:setlinestyle(linestyle,upattern,thickness);

功能:設(shè)置畫線函數(shù)的畫線方式,畫線方式在這里指畫線時(shí)所用的線型和寬度。

其中參數(shù)linestyle指定所畫線的類型,其值可取表10-5中的值:

表10-5linestyle可選值表10.2.3

基本繪圖函數(shù)符號名數(shù)值含義符號名數(shù)值含義SOLID_LINE0實(shí)線DASHED_LINE3破折線DOTTED_LINE1點(diǎn)線UNERBIT_LINE4用戶自定義線型CENTER_LINE2中心線10.2

TurboC的圖形與動畫處理第10章

(2)畫從A點(diǎn)到B點(diǎn)的直線line()

格式:line(x0,y0,x1,y1);

功能:畫一條從點(diǎn)(x0,y0)到點(diǎn)(x1,y1)的直線。函數(shù)的四個(gè)參數(shù)都必須是整型,其中x0和x1的取值范圍是0~640,y0和y1的取值范圍是0~480。

(3)畫從當(dāng)前點(diǎn)到某點(diǎn)的直線lineto()

格式:lineto(x,y);

功能:畫一條從當(dāng)前點(diǎn)到點(diǎn)(x,y)的直線。其中x、y的類型和取值同上。調(diào)用此函數(shù)后,當(dāng)前點(diǎn)將變?yōu)?x,y)。10.2.3

基本繪圖函數(shù)10.2

TurboC的圖形與動畫處理第10章

(4)畫確定增量的直線linerel(dx,dy)

格式:linerel(intdx,intdy);

功能:畫一條從當(dāng)前點(diǎn)(x,y)到按相對增量確定的點(diǎn)(x+dx,y+dy)的直線。

調(diào)用此函數(shù)后,當(dāng)前點(diǎn)將變?yōu)?x+dx,y+dy)。從表面看,此函數(shù)的功能與lineto()函數(shù)相同,但此函數(shù)多用于dx和dy不確定的情況下,而lineto()函數(shù)一般用于x、y已經(jīng)確定的情況。10.2.3

基本繪圖函數(shù)10.2

TurboC的圖形與動畫處理第10章

3.畫簡單圖形(無填充)函數(shù)

(1)畫矩形函數(shù)rectangle()

格式:rectangle(x1,y1,x2,y2);

功能:以(x1,y1)為左上角,(x2,y2)為右下角畫一個(gè)矩形框。

(2)畫多邊形函數(shù)drawpoly()

格式:drawpoly(numpoints,polypoints);

功能:畫一個(gè)頂點(diǎn)數(shù)為numpoints,各頂點(diǎn)坐標(biāo)由polypoints給出的多邊形。第一個(gè)參數(shù)numpoints指出多邊形的頂點(diǎn)數(shù),第二個(gè)參數(shù)polypoints是一個(gè)整型數(shù)組,數(shù)組中存儲著numpoints個(gè)頂點(diǎn)的坐標(biāo)值序列。10.2.3

基本繪圖函數(shù)10.2

TurboC的圖形與動畫處理第10章

(3)畫圓函數(shù)circle()

格式:circle(x,y,radius);

功能:畫一個(gè)以(x,y)為圓心,半徑為radius的圓。參數(shù)均為整數(shù)。

(4)畫弧函數(shù)arc()

格式:arc(x,y,stangle,endangle,radius);

功能:本函數(shù)以(x,y)為中心點(diǎn),radius為半徑,從起始角stangle到終止角endangle之間以當(dāng)前前景顏色畫一個(gè)圓弧。

參數(shù)都是整數(shù),stangle和endangle使用角度值表示。從x軸方向逆時(shí)針旋轉(zhuǎn),依次經(jīng)過90、180、270度。當(dāng)旋轉(zhuǎn)至360度時(shí),和x軸重合,當(dāng)半徑從x軸方向開始順時(shí)針旋轉(zhuǎn)時(shí),形成負(fù)角度。10.2.3

基本繪圖函數(shù)10.2

TurboC的圖形與動畫處理第10章

(5)畫橢圓弧函數(shù)ellipse()

格式:ellipse(x,y,stangle,endangle,xradius,yradius);

功能:以(x,y)為中心,以xradius為x軸半徑,yradius為y軸半徑,從起始角stangle到終止角endangle之間以當(dāng)前前景色畫一個(gè)橢圓弧。如果起始角是0,終止角是360,畫出的是一個(gè)完整的橢圓。角度的規(guī)定同上。10.2.3

基本繪圖函數(shù)10.2

TurboC的圖形與動畫處理第10章

1.設(shè)置填充模式和顏色函數(shù)setfillstyle()

格式:voidsetfillstyle(intpattern,intcolor);

功能:設(shè)置填充模式pattern和顏色color。TurboC的圖形系統(tǒng)中已經(jīng)預(yù)定義了多種模式,如表10-6所示。程序中既可以使用符號常量,也可以直接使用表中對應(yīng)的數(shù)值。10.2.4

填充類函數(shù)符號名數(shù)值含義符號名數(shù)值含義EMPTY_FILL0用背景色填充SOLID_FILL1實(shí)填充LINE_FILL2用‘-’填充LTSLASH_FILL3用細(xì)///填充SLASH_FILL4用粗///填充BKSLASH_FILL5用細(xì)\\\填充LTBKSLASH_FILL6用粗\\\填充HATCH_FILL7用網(wǎng)線填充XHATCH_FILL8用交叉線填充INTERLEAVE_FILL9用間隔線填充WIDE_DOT_FILL10用寬間斷點(diǎn)填充CLOSE_DOT_FILL11用密集點(diǎn)填充USER_FILL12用戶自定義填充10.2

TurboC的圖形與動畫處理第10章

2.填充任意特定封閉區(qū)域函數(shù)floodfill()

格式:floodfill(x,y,bcolor);

功能:填充一個(gè)封閉的區(qū)域。

參數(shù)(x,y)指被填充區(qū)域中的一個(gè)點(diǎn),bcolor指出填充區(qū)域的邊界顏色。其中:(x,y)為封閉圖形內(nèi)的任意一點(diǎn)。border為邊界的顏色,也就是封閉圖形輪廓的顏色。調(diào)用了該函數(shù)后,將用函數(shù)setfillstyle規(guī)定的顏色和圖模填滿整個(gè)封閉圖形。

注意:

①如果x或y取在邊界上,則不進(jìn)行填充。

②如果不是封閉圖形則填充會從沒有封閉的地方溢出去,填滿其它地方。

③如果x或y在圖形外面,則填充封閉圖形外的屏幕區(qū)域。

④由border指定的顏色值必須與圖形輪廓的顏色值相同。10.2.4

填充類函數(shù)10.2

TurboC的圖形與動畫處理第10章

3.帶填充畫圖函數(shù)

本類函數(shù)不需要設(shè)置開始填充點(diǎn),而是在繪制圖形時(shí)直接使用由setfillstyle()函數(shù)設(shè)置的模式和顏色進(jìn)行填充。

(1)畫直方圖函數(shù)bar()

格式:bar(x1,y1,x2,y2);

功能:確定一個(gè)以(x1,y1)為左上角,(x2,y2)為右下角的矩形窗口,再按規(guī)定模式和顏色填充。此函數(shù)不畫出邊框,即直方圖的邊框顏色與填充色相同。

(2)畫立方圖函數(shù)bar3d()

格式:bar3d(x1,y1,x2,y2,depth,topflag);

功能:當(dāng)topflag為非0時(shí),畫出一個(gè)三維的長方體。10.2.4

填充類函數(shù)10.2

TurboC的圖形與動畫處理第10章

(3)畫并填充多邊形函數(shù)fillpoly()

格式:fillpoly(numpoints,polypoints);

功能:此函數(shù)使用當(dāng)前線型和前景色畫多邊形,并使用當(dāng)前的填充模式和填充顏色填充這個(gè)多邊形。參數(shù)的取值與drawpoly()完全相同。

(4)畫并填充橢圓函數(shù)fillellipse()

格式:fillellipse(x,y,xradius,yradius);

功能:以(x,y)為中心,分別以xradius和yradius為橫半軸和縱半軸,繪制并填充一個(gè)橢圓。

使用當(dāng)前的線型和前景色畫邊線,以當(dāng)前的填充模式和填充顏色填充橢圓內(nèi)部。10.2.4

填充類函數(shù)10.2

TurboC的圖形與動畫處理第10章

(5)畫并填充扇形函數(shù)pieslice()

格式:pieslice(x,y,stangle,endangle,radius);

功能:以(x,y)為中心,stangle和endangle是起始角度和終止角度,radius是扇形的半徑。使用當(dāng)前的前景色和線型畫出扇形的輪廓線,并以當(dāng)前的填充模式和填充顏色填充其內(nèi)部的區(qū)域。

(6)畫并填充橢圓扇區(qū)函數(shù)sector()

格式:sector(x,y,stangle,endangle,xradius,yradius);

功能:以(x,y)為中心,stangle和endangle是起始角度和終止角度,xradius和yradius分別為橫半軸半徑和縱半軸半徑。10.2.4

填充類函數(shù)10.2

TurboC的圖形與動畫處理第10章

1.設(shè)置字體函數(shù)

格式:settextstyle(font,direction,charsize);

功能:用于設(shè)置圖形方式下輸出文本時(shí)使用的字體名稱、文本顯示的方向和字符的大?。▽?shí)際是放大倍數(shù))。

參數(shù)font指定選用的字體名稱或代號,它的取值范圍見表10-7:

表10-7font可選值表10.2.5

圖形方式下的文本輸出符號名數(shù)值含義符號名數(shù)值含義DEFAULT_FONT08*8點(diǎn)陣字體(默認(rèn))TRIPLEX_FONT1三倍筆劃字體SMALL_FONT2小號筆劃字體SAN_SERIF_FONT3無襯線筆劃字體GOTHIC_FONT4黑體筆劃字體10.2

TurboC的圖形與動畫處理第10章

2.輸出字符串函數(shù)

TurboC圖形方式下輸出字符串的函數(shù)有兩個(gè):

(1)在當(dāng)前位置輸出字符串函數(shù)outtext()

格式:outtext(textstring);

功能:此函數(shù)在當(dāng)前位置使用當(dāng)前前景色輸出字符串textstring。輸出格式采用settextstyle()的設(shè)置或缺省值。textstring為字符型指針,指向文本在現(xiàn)行位置。

注意:在圖形方式下,當(dāng)前位置是不可見的。10.2.5

圖形方式下的文本輸出10.2

TurboC的圖形與動畫處理第10章

(2)在指定位置輸出字符串函數(shù)outtextxy()

格式:outtextxy(x,y,textstring);

功能:在(x,y)處使用當(dāng)前前景色輸出字符串textstring。格式采用settextstyle()的設(shè)置或缺省值。textstring為字符型指針,指向文本的現(xiàn)行位置。

說明:

這兩個(gè)函數(shù)都是輸出字符串,但經(jīng)常會遇到輸出數(shù)值或其它類型的數(shù)據(jù),此時(shí)就必須使用格式化輸出函數(shù)sprintf()。

sprintf()函數(shù)的調(diào)用格式為:

sprintf(char*str,char*format,variable-list);10.2.5

圖形方式下的文本輸出10.2

TurboC的圖形與動畫處理第10章

所謂動畫設(shè)計(jì),就是將一個(gè)畫面分解成不同時(shí)間出現(xiàn)的圖像,快速地擦抹并顯示在屏幕上,使人的視覺差異而產(chǎn)生動的感覺。動畫設(shè)計(jì)被廣泛運(yùn)用于游戲設(shè)計(jì)、課件制作、實(shí)驗(yàn)?zāi)M以及仿真科學(xué)等。

注意:

動畫只是運(yùn)用一些時(shí)間控制函數(shù),利用人眼的視覺差異而已。實(shí)現(xiàn)動畫要綜合運(yùn)用圖形函數(shù)的知識,并具有一定的想象力和數(shù)據(jù)描述能力,在例10.4、例10.5中,我們已經(jīng)運(yùn)用了動畫設(shè)計(jì)技術(shù)思想,實(shí)現(xiàn)了畫面動的感覺。10.2.6動畫設(shè)計(jì)技術(shù)10.2

TurboC的圖形與動畫處理第10章

1.存、取圖形(1)求存儲屏幕圖像所需空間imagesize()格式:imagesize(x1,y1,x2,y2);功能:求存儲屏幕圖像左上角(x1,y1)到右下角(x2,y2)的方塊所需字節(jié)數(shù)。(2)存儲圖像函數(shù)getimage()格式:getimage(x1,y1,x2,y2,*buf);功能:存儲屏幕圖像左上角(x1,y1)到右下角(x2,y2)的方塊到buf所指向的存儲區(qū)域。10.2.6動畫設(shè)計(jì)技術(shù)10.2

TurboC的圖形與動畫處理第10章

(3)復(fù)制存儲圖像函數(shù)outimage()

格式:putimage(x,y,*buf,op)

功能:將用getimage()存儲在buf所指向的內(nèi)存中的圖像復(fù)制到屏幕上,左上角位于(x,y)處。其中op為操作模式,含義如表10-10:10.2.6動畫設(shè)計(jì)技術(shù)符號名數(shù)值含義符號名數(shù)值含義COPY_PUT0原樣寫到屏幕XOR_PUT1與屏幕上的點(diǎn)異或后寫OR_PUT2與屏幕上的點(diǎn)或后寫AND_PUT3與屏幕上的點(diǎn)與后寫NOT_PUT4原圖像變反后再寫10.2

TurboC的圖形與動畫處理第10章

2.頁操作存儲在圖像存儲器VRAM中的一滿屏圖像信息稱為一頁,一般為64KB大小。TurboC圖形方式下最多可支持4頁,一般可支持兩頁。對活動頁可以編輯圖像,對可視頁可以顯示圖像。相關(guān)函數(shù)如下:(1)setactivepage(n)函數(shù)功能:設(shè)置活動圖形頁。(2)setvisualpage(n)函數(shù)功能:設(shè)置當(dāng)前顯示圖形頁。函數(shù)中參數(shù)n為頁號,缺省值為0頁。調(diào)用setactivepage

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論