• /  40
  • 下載費用: 9.90積分  

C語言進階及試題剖析全部課件第7章 C語言圖形編程基礎.ppt

'C語言進階及試題剖析全部課件第7章 C語言圖形編程基礎.ppt'
第7章 C語言的圖形編程基礎 7.1 圖形處理基礎 7.2 文本模式下的圖形處理 7.3 圖形模式下的圖形處理 7.1.1 圖形處理與顯示適配器 計算機中的圖形顯示都是經過顯示適配器(也稱為顯卡、圖形適配器)的處理才能輸出到顯示器屏幕上,顯示適配器在圖形處理中有著重要的作用。由于顯示適配器的不同,所支持的圖形模式也不同,下面簡單介紹TC 2.0所支持的顯示適配器類型。1.CGA CGA(彩色圖形適配器)是PC/XT等微機配用的顯示適配器,它可以顯示單色或彩色字符和圖形。 在圖形方式下,TC支持兩種分辨率,一種為高分辨率方式(CGAHI),像素數為640*200像素,這時背景色是黑的(可以重新設置),前景色可供選擇,但前景色只能是一種,因此圖形只顯示兩種色彩。CGA的另一種為中分辨率顯示方式,像素數為320*200像素,其背景色和前景色均可由用戶選擇,但僅能顯示4種顏色。在該顯示方式下,可有4種顏色模式供選擇,即CGAC0、CGAC1、CGAC2和CGAC3,它們的區別是所顯示的4種顏色有所不同。 7.1 圖形處理基礎 2.EGA EGA(增強型圖形適配器)除支持CGA的4種顯示模式外,還增加了分辨率為640*200像素的16色顯示方式,TC中稱為EGALO(EGA低分辨率顯示方式)和640*350像素的EGA高分辨顯示方式(EGAHI),也可顯示16色。3.VGAVGA(視頻圖形陣列適配器)是目前流行的PC顯示標準,它支持CGA、EGA的所有顯示方式,同時還有640*480像素的高分辨率顯示方式(VGAHI)、640*350像素的中分辨率顯示方式(VGAMED)和640*200像素的低分辨率顯示方式(VGALO),它們均有16種顯示顏色可供選擇。4.MCGAMCGA的功能與CGA相似,它和CGA是部分兼容的,但有些功能又和VGA類似,有640*480像素的兩色模式。5.IBM8514IBM8514適配器具有較強的圖形功能,最高分辨率可達1024*768像素,有256種顏色。 7.1 圖形處理基礎 7.1.2 文本模式 圖7.1 文本模式坐標系統 文本模式就是在文本字符形式下的顯示方式,它的顯示單位是字符,而在圖形模式下,顯示的單位是像素。 不論是采用文本模式還是圖形模式,繪圖時都需要對顯示字符(或像素)的位置進行定位,這種定位通常是由坐標系統來決定的,由于是以文本模式進行顯示,要控制字符的位置就可以用字符顯示時的行、列為設置坐標的單位。 在缺省方式下,TC規定屏幕坐標為每屏80列25行,屏幕的左上角為1行1列,右下角為25行80列,如圖7.1所示。 7.1 圖形處理基礎 7.1 圖形處理基礎 圖7.1 文本模式坐標系統 7.1.3 圖形模式 在圖形處理模式下,顯示的基本單位是像素。像素作為圖形處理的基本單位,在屏幕上顯示為一個點。屏幕上像素的數目就是通常所說的屏幕分辨率,它取決于顯示器、顯示適配器及屏幕模式。 顯示圖形時,可以通過屏幕坐標系統來決定構成圖形的像素位置,在屏幕坐標系統中,以左上角為坐標原點(0,0),向右為x軸的正方向,向下為y軸的正方向,這一點有別于常用的數學坐標系。 程序設計中所能使用的像素的數目,也就是屏幕可使用的單位取決于圖形系統初始化時的圖形模式。 7.1 圖形處理基礎 7.2.1 文本模式設置 在文本模式下處理圖形,首先要做的就是設置文本模式,程序設計中,文本模式的設置可以通過函數textmode()來實現。textmode()函數的使用格式如下:textmode( int mode);參數mode(enum text_modes)是將要設置的文本模式。 7.2.2 文本顏色的設置 在文本模式下輸出時,如果使用了彩色的文本模式,就可以設置文本顏色及背景顏色,這些設置可以由相應的函數來完成。1.文本顏色 文本顏色設置函數textcolor()可用于設置顯示文本的前景色,也就是字符的顏色,該函數使用格式如下:textcolor(int color);參數color(enum COLORS)為設置的顏色。 7.2 文本模式下的圖形處理 2.文本背景顏色文本顏色設置函數textbackground()可用于設置文本的背景色,該函數使用格式如下:textbackground(int color);參數color為設置的顏色,可使用的參數值為0~7的8種。3.文本屬性 文本顏色設置函數textattr()可用于設置文本的屬性,包括前景色,背景色,以及字符顯示時是否閃爍,該函數使用格式如下:textattr(int attr); 參數attr使用了一個字節來描述文本的屬性,各位的含義如圖7.2所示。 7.2 文本模式下的圖形處理 其中低4位(0~3)用來設置字符顯示的顏色(前景色),對應于顏色值0~15;第4~6位用于設置背景色;最高位用于設置顯示出的字符是否閃爍。在設置屬性值時可以通過位運算來控制顏色是設置到字節的具體位。 7.2 文本模式下的圖形處理 圖7.2 文本屬性字節的含義 其中低4位(0~3)用來設置字符顯示的顏色(前景色),對應于顏色值0~15;第4~6位用于設置背景色;最高位用于設置顯示出的字符是否閃爍。在設置屬性值時可以通過位運算來控制顏色是設置到字節的具體位。例如,下面的語句將設置藍色背景下的黃色字符:textattr(YELLOW+(BLUE<<4));下面的語句將設置白色背景下的紅色閃爍字符:textattr(RED+BLINK+(WHITE<<4));4.文本亮度TC中提供了三處可以設置文本亮度的函數,分別如下:highvideo(); /* 設置文本為高亮顯示 */lowvideo(); /* 設置文本為低亮顯示 */normvideo(); /* 設置文本為正常亮度 */ 7.2 文本模式下的圖形處理 7.2.3 文本窗口與文本輸出 文本窗口是文本模式下在屏幕上定義的一個矩形區域,當程序需要在屏幕上顯示文本信息時,將只顯示在這個窗口中,而不能輸出到窗口以外的區域。默認情況下,窗口就是整個屏幕。1.文本窗口設置 可以調用window()函數進行窗口的設置,它可以將全屏幕窗口設置為程序所指定的、小于全屏幕的窗口。window()函數使用格式如下:window(int left,int top,int right,int bottom);參數left和right指定窗口第1列和最后1列在全屏幕窗口中的列數,top和bottom指定第1行和最后1行在全屏幕窗口中的行數。 當定義了窗口后,前面所學的textcolor()、textbackgr。省略部分。70,150,50,1);/*繪制三維立體直方圖,有頂面*/ bar3d(250,50,320,150,50,0);/*繪制三維立體直方圖,無頂面*/ fillpoly(7,p); /*繪制多邊形*/ pieslice(80,250,45,135,80);/*繪制扇形*/ sector(150,250,0,90,150,80);/*繪制橢圓扇形*/ fillellipse(450,210,100,50);/*繪制封閉的橢圓*/ getch(); closegraph();} 7.3.4 屏幕操作為了方便對屏幕圖像的操作,如重繪、移動等,TC提供了一系列的屏幕操作函數。1.屏幕圖像的存儲與顯示將屏幕圖像存儲到內存的函數是getimage(),格式如下:getimage(int x1,int y1,int x2,int y2,void far *bitmap);該函數將屏幕上以(x1,y1)為左上角,以(x2,y2)為右下角的矩形區域內的圖像存儲到指針bitmap所指定的內存中。其中,bitmap所指為存儲圖像的內存緩沖區,該緩沖區的大小可由函數imagesize()取得,該函數格式如下:int imagesize(int x1,int y1,int x2,int y2);該函數執行時返回屏幕上以(x1,y1)為左上角,以(x2,y2)為右下角的矩形區域圖像存儲所需要的字節數。函數putimage()可將存儲在內存中的圖像顯示到屏幕上,格式如下:putimage(int x1,int y1,void far *bitmap,int op);該函數將指針bitmap所指內存空間所存儲的圖像按op(enum putimage_ops)所指定的操作顯示到以(x1,y1)為左上角的區域。 7.3 圖形模式下的圖形處理 2.圖形窗口與文本窗口相似,在圖形方式下也可以將屏幕上任意矩形區域設置為一個窗口,以后的操作都在這個窗口中進行。在定義了圖形窗口后,圖形操作的坐標都是以窗口左上角為(0,0)點,而不是以屏幕左上角為(0,0)點。定義圖形窗口的函數setriewport()如下:setviewport(int x1,int y1,int x2,int y2,int clipflag);該函數將屏幕上以(x1,y1)為左上角,以(x2,y2)為右下角的矩形區域定義為一個窗口,參數clipflag指定當所繪圖形超出窗口邊界時的處理方式:如果值為1,則超出部分將被減去,不能顯示出來;如果值為0,則超出部分仍將繪制出來。函數clearviewport()可用于清除圖形窗口的內容,格式如下:clearviewport(); 7.3 圖形模式下的圖形處理 函數getviewsettings()用于獲取當前窗口信息,格式如下:getviewsettings(struct viewporttype fat * viewport); 該函數將取得的窗口信息存儲到結構 viewporttype中,該結構定義如下:struct viewporttype{int left, top, right, bottom; /* 窗口的左、上、右、下對應的坐標數據 */int clip; /* 窗口超出部分的處理方式 */};利用窗口和屏幕圖像的存取,可以很方便地實現圖形動畫,例如,可以在不同的窗口中繪制出同樣的圖形,再按一定的時間間隔在不同的位置繪制出該窗口;或者將存儲的圖像在不同的位置按一定的時間間隔進行復制。 7.3 圖形模式下的圖形處理 例5:綜合實例:文本窗口與菜單 例6:綜合實例:花瓣圖案 #include "conio.h"void box(int x,int y,int width,int high);main(){ int i; char *menu[]={"File","Edit","Run" ,"Compile","Window"};/*定義水平菜單字符串*/ textmode(C80); textattr(WHITE+(BLACK<<4)); clrscr(); window(1,1,60,25); /*定義程序窗口*/ textattr(RED+(LIGHTGRAY<<4)); clrscr(); for(i=0;i<5;i++) /*輸出水平菜單字符*/ { gotoxy(5+i*10,1); cprintf("%s",menu[i]); } window(2,2,58,25); /*定義編輯窗口*/ textattr(WHITE+(BLUE<<4)); clrscr(); box(1,1,57,22); /*調用box()繪制編輯窗口邊框*/ window(1,25,60,25); /*定義底部信息窗口*/ textattr(BLACK+(LIGHTGRAY<<4)); clrscr(); gotoxy(5,1); cprintf("F1-Help F5-Zoom F6-Switch F7-Trace");/*輸出信息窗口字符*/ getch();}/*box()函數用于輸出一個矩形字符邊框*/void box(int x,int y,int width,int high){ int i; gotoxy(x,y); putch(0xda); for(i=x+1;i<width;i++) putch(0xc4); putch(0xbf); for(i=y+1;i<high;i++) { gotoxy(x,i); putch(0xb3); gotoxy(width,i); putch(0xb3); } gotoxy(x,high); putch(0xc0); for(i=x+1;i<width;i++) putch(0xc4); putch(0xd9); return;}#define PI 3.1415926#include "math.h"#include "graphics.h"main(){ int graphdriver=DETECT; int graphmode; float i,j,x1,x2,y1,y2; detectgraph(&graphdriver,&graphmode); initgraph(&graphdriver,&graphmode,""); setcolor(BLUE); setbkcolor(WHITE); cleardevice(); for(i=0;i<=2*PI;i+=PI/360) { j=100*(1+sin(4*i)); x1=j*cos(i)+320; x2=j*cos(i+PI/4)+320; y1=j*sin(i)+240; y2=j*sin(i+PI/4)+240; line(x1,y1,x2,y2); } getch(); closegraph();}
關 鍵 詞:
c語言 剖析 全部 圖形 試題 編程 進階 基礎
 天天文庫所有資源均是用戶自行上傳分享,僅供網友學習交流,未經上傳用戶書面授權,請勿作他用。
關于本文
本文標題:C語言進階及試題剖析全部課件第7章 C語言圖形編程基礎.ppt
鏈接地址: http://www.476824.live/p-51617281.html
關于我們 - 網站聲明 - 網站地圖 - 資源地圖 - 友情鏈接 - 網站客服點擊這里,給天天文庫發消息,QQ:1290478887 - 聯系我們

本站為“文檔C2C交易模式”,即用戶上傳的文檔直接賣給(下載)用戶,本站只是中間服務平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有【成交的100%(原創)】。本站是網絡服務平臺方,若您的權利被侵害,侵權客服QQ:1290478887 歡迎舉報。

[email protected] 2017-2027 http://www.476824.live 網站版權所有

粵ICP備19057495號 

收起
展開
球探网即时蓝球比分 2018开奖记录开奖现场 北京快三开奖结果 海南 博彩 浙江11选五5专家推荐快赢网 11选5杀一码百分百命中 北京pk赛车4码计划最准 广东体彩快中彩开奖结果 山西新11选5走势图表i 有极速快三的平台 黑龙江体彩11选五技巧