资源描述
urboC图形图形设计n1 显示系统n显示器:CRT(阴极射线管)与控制电路组成n适配器(图形卡):CPU与显示器的接口,由寄存器组、存储器和控制电路组成主机图形控制器显示存储器显示控制器适配器CRT将要显示的字符和图形以数字形式存储在卡上的视频RAM中,再转换成视频模拟信号传送给相应的显示器urboC图形显示模式文本模式:显示缓冲区中存放显示字符的代码(ASCII码或汉字机内码),及字符的属性,显示屏幕按字符分成若干行、列,如80列25行图形模式:显示缓冲区中存放显示屏幕上每点(象素)的颜色或灰度值,显示屏幕按象素分成若干行、列,如640480一般开机后的模式都是80 25的文本模式urboC图形文本窗口的定义 Turbo C2.0默认定义的文本窗口为整个屏幕, 共有80列(或40列)25行的文本单元, 每个单元包括一个字符和一个属性, 字符即ASCII 码字符, 属性规定该字符的颜色和强度。 Turbo C2.0可以定义屏幕上的一个矩形域作为窗口, 使用window()函数定义。 窗口定义之后, 用有关窗口的输入输出函数就可以只在此窗口内进行操作而不超 出窗口的边界。 urboC图形 window()函数的调用格式为: void window(int left, int top, int right, int bottom); 该函数的原型在conio.h 中 。 函数中形式参数(int left, int top)是窗口左上角的坐标, (int right, int bottom)是窗口的右下角坐标. 其中(left, top)和(right,bottom) 是相对于整个屏幕而言的。 Turbo C 2.0规定整个屏幕的左上角坐标为(1, 1), 右下角坐标为(80, 25)。window(20, 5, 50, 25); urboC图形文本窗口颜色的设置 文本窗口颜色的设置包括背景颜色的设置和字符颜色的设置, 使用的函数及 其调用格式为: 设置背景颜色: void textbackground(int color); 设置字符颜色: void textcolor(int color); urboC图形 下面这个程序使用了关于窗口大小的定义、颜色的设置等函数, 在一个屏幕上不同位置定义了7个窗口, 其背景色分别使用了7种不同的颜色。 #include #include main() int i; textbackground(0); /* 设置屏幕背景色 */ clrscr(); /* 清除文本屏幕 */ for(i=1; i8; i+) window(10+i*5, 5+i, 30+i*5, 15+i); /* 定义文本窗*/ textbackground(i); /* 定义窗口背景色 */ clrscr(); /* 清除窗口 */ getch(); urboC图形2 Turbo C绘图Turbo C支持的适配器和图形模式xy(0,0)分辨率:640 480(0,0)(0,0)(20,50)(639,479)(400,150)图形库文件与图形头文件 graphics.lib与graphics.h图形显示的坐标与象素适配器模式分辨率颜色数标识符CGA(彩色图形适配器)EGA(增强图形适配器)VGA(视频图形阵列)0320 2004CGAC04640 2002CGAHI1320 2004CGAC12320 2004CGAC23320 2004CGAC30640 20016EGAL01640 35016EGAHI0640 20016VGAL01640 35016VGAMED2640 48016VGAHIurboC图形#include main() int driver=DETECT,mode; initgraph(&driver,&mode, “”); . closegraph();initgraph(&driver,&mode, “d:tcbgi”);#include main() int driver=VGA; int mode=VGAHI; initgraph(&driver,&mode, “”); . closegraph();将指定模式的驱动程序 (*.GBI)从当前路径下调入内存关闭图形系统回到文本模式urboC图形1. 图形模式的初始化图形模式的初始化 void far initgraph(int far *gdriver, int far *gmode, char *path); void far detectgraph(int *gdriver, *gmode); void far closegraph(void);2.屏幕颜色的设置和清屏函数屏幕颜色的设置和清屏函数 设置背景色: void far setbkcolor( int color); 设置作图色: void far setcolor(int color); 清 屏: voide far cleardevice(void);urboC图形3. 基本图形函数基本图形函数 1). 画点函数 void far putpixel(int x, int y, int color); int far getpixel(int x, int y); 2). 有关坐标位置的函数 int far getmaxx(void); int far getmaxy(void); int far getx(void); void far gety(void); void far moveto(int x, int y); void far moverel(int dx, int dy);urboC图形3). 画线函数 void far line(int x0, int y0, int x1, int y1); void far lineto(int x, int y); void far linerel(int dx, int dy); void far circle(int x, int y, int radius); void far arc(int x, int y, int stangle, int endangle, int radius); void ellipse(int x, int y, int stangle, int endangle, int xradius, int yradius); void far rectangle(int x1, int y1, int x2, inty2); void far drawpoly(int numpoints, int far *polypoints); 4). 设定线型函数 void far setlinestyle(int linestyle, unsigned upattern, Int thickness);urboC图形4. 封闭图形的填充封闭图形的填充 先画轮廓再填充 void far bar(int x1, int y1, int x2, int y2); void far bar3d(int x1, int y1, int x2, int y2, int depth, int topflag); void far pieslice(int x, int y, int stangle, int endangle, int radius); void far sector(int x, int y, int stanle, intendangle, int xradius, int yradius); 设定填充方式 void far setfillstyle(int pattern, int color); void far setfillpattern(char * upattern,int color); void far getfillpattern(char * upattern); 任意封闭图形的填充 void far floodfill(int x, int y, int border);urboC图形5. 有关图形窗口和图形屏幕操作函数有关图形窗口和图形屏幕操作函数 图形窗口操作 void far setviewport(int xl,int yl,int x2, int y2,int clipflag); void far clearviewport(void); 屏幕操作 void far setactivepage(int pagenum); void far setvisualpage(int pagenum); void far getimage(int xl,int yl, int x2,int y2, void far *mapbuf); void far putimge(int x,int,y,void * mapbuf, int op); unsined far imagesize(int xl,int yl,int x2,int y2);urboC图形6. 图形模式下的文本输出图形模式下的文本输出 文本输出函数 void far outtext(char far *textstring); void far outtextxy(int x, int y, char far *textstring); int sprintf(char *str, char *format, variable-list); 有关文本字体、字型和输出方式的设置 void far settexjustify(int horiz, int vert); 用户对文本字符大小的设置 void far setusercharsize(int mulx, int divx, int muly, int divy);urboC图形7 7 图形程序的图形程序的独立运行独立运行问题问题为使图形方式的为使图形方式的C C源程序能够脱离源程序能够脱离TCTC环境下运行,应对环境下运行,应对EGAVGAEGAVGA显示器的驱动程序显示器的驱动程序.BGI.BGI转换成转换成.OBJ.OBJ文件文件: : C:TC C:TCBGIOBJBGIOBJ EGAVGA EGAVGA然后然后, ,将将EGAVGA.OBJEGAVGA.OBJ与与GRAPHICS.LIBGRAPHICS.LIB进行连接进行连接: : C:TC C:TCTLIBTLIB LIBGRAPHICS.LIB+EGAVGA.OBJ LIBGRAPHICS.LIB+EGAVGA.OBJ程序中程序中,initgraph(),initgraph()调用前要用调用前要用registerbgidriver()registerbgidriver()进行登记进行登记: : registerbgidriverregisterbgidriver(EGAVGA_driver);(EGAVGA_driver);urboC图形颜色值颜色名颜色 颜色值颜色名颜色0123456789101112131415BLACKBLUEGREENCYANREDMAGENTABROWNLIGHTGRAYDARKGRAYLIGHTBLUELIGHTGREENLIGHTCYANLIGHTREDLIGHTMAGENTAYELLOWWHITE黑蓝绿青红洋红棕浅灰深灰淡蓝淡绿淡青淡红淡洋红黄白
展开阅读全文