《urboC图形》PPT课件.ppt
图形设计,1 显示系统显示器:CRT(阴极射线管)与控制电路组成适配器(图形卡):CPU与显示器的接口,由寄存器组、存储器和控制电路组成,将要显示的字符和图形以数字形式存储在卡上的视频RAM中,再转换成视频模拟信号传送给相应的显示器,显示模式文本模式:显示缓冲区中存放显示字符的代码(ASCII码或汉字机内码),及字符的属性,显示屏幕按字符分成若干行、列,如80列25行图形模式:显示缓冲区中存放显示屏幕上每点(象素)的颜色或灰度值,显示屏幕按象素分成若干行、列,如640480,一般开机后的模式都是80 25的文本模式,文本窗口的定义,Turbo C2.0默认定义的文本窗口为整个屏幕,共有80列(或40列)25行的文本单元,每个单元包括一个字符和一个属性,字符即ASCII 码字符,属性规定该字符的颜色和强度。Turbo C2.0可以定义屏幕上的一个矩形域作为窗口,使用window()函数定义。窗口定义之后,用有关窗口的输入输出函数就可以只在此窗口内进行操作而不超 出窗口的边界。,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);,文本窗口颜色的设置,文本窗口颜色的设置包括背景颜色的设置和字符颜色的设置,使用的函数及 其调用格式为:设置背景颜色:void textbackground(int color);设置字符颜色:void textcolor(int color);,下面这个程序使用了关于窗口大小的定义、颜色的设置等函数,在一个屏幕上不同位置定义了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();,2 Turbo C绘图Turbo C支持的适配器和图形模式,图形库文件与图形头文件 graphics.lib与graphics.h图形显示的坐标与象素,#include main()int driver=DETECT,mode;initgraph(,initgraph(,#include main()int driver=VGA;int mode=VGAHI;initgraph(,将指定模式的驱动程序(*.GBI)从当前路径下调入内存,关闭图形系统回到文本模式,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);,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);,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);,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);,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);,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);,7 图形程序的独立运行问题为使图形方式的C源程序能够脱离TC环境下运行,应对EGAVGA显示器的驱动程序.BGI转换成.OBJ文件:C:TCBGIOBJ EGAVGA然后,将EGAVGA.OBJ与GRAPHICS.LIB进行连接:C:TCTLIB LIBGRAPHICS.LIB+EGAVGA.OBJ程序中,initgraph()调用前要用registerbgidriver()进行登记:registerbgidriver(EGAVGA_driver);,