1、2023-4-29河北农业大学 张玉新1C语言图形程序设计基础计算机图形学相关2023-4-29河北农业大学 张玉新21.屏幕设置屏幕设置1)设置屏幕为图形模式2)选择背景与实体颜色3)计算坐标4)调用绘图语句绘制实体1.1 屏幕显示模式与坐标系屏幕显示模式与坐标系文本模式与图形模式1.2 图形驱动程序与图形模式图形驱动程序与图形模式2023-4-29河北农业大学 张玉新3 图形驱动程序及其相应的模式 图形驱动器(gdriver)图形模式(gmode)值 调色板 分辨率 CGA 1 CGAC0 0 C0 320*200 CGAC1 1 C1 320*200 CGAC2 2 C2 320*200
2、 CGAC3 3 C3 320*200 CGAHI 4 2色 640*200 MCGA 2 MCGAC0 0 C0 320*200 MCGAC1 1 C1 320*200 MCGAC2 2 C2 320*200 MCGAC3 3 C3 320*200 MCGAMED 4 2色 640*200 MCGAHI 5 2色 640*480 EGA 3 EGALO 0 16色 640*200 EGAHI 1 16色 640*350 2023-4-29河北农业大学 张玉新4 EGA64 4 EGA64LO 0 16色 640*200 EGA64HI 1 4色 640*350 EGAMON 5 EGAMON
3、HI 0 2色 640*350 IBM8514 6 IBM8514LO 0 256色 640*480 IBM8514HI 1 256色 1024*768 HERC 7 HERCMONOHI 0 2色 720*348 ATT400 8 ATT400C0 0 C0 320*200 ATT400C1 1 C1 320*200 ATT400C2 2 C2 320*200 ATT400C3 3 C3 320*200 ATT400MED 4 2色 320*200 ATT400HI 5 2色 320*200 VGA 9 VGALO 0 16色 640*200 VGAMED 1 16色 640*350 VGA
4、HI 2 16色 640*480 PC3270 10 PC3270HI 0 2色 720*350 DETECT 0 用于硬件测试 2023-4-29河北农业大学 张玉新51.3 图形系统初始化和模式控制图形系统初始化和模式控制include /*要使用图形函数,必须包含此要使用图形函数,必须包含此函数函数库库*/1)图形系统初始化void far initgraph(int*gdriver,int*gmode,char*path)/*已知显示器类型的图形系统初始化*/#include graphics.h#include graphics.h main()main()int gdriver,g
5、modeint gdriver,gmode;gdriver=CGA;/gdriver=CGA;/*设置显示模式为设置显示模式为CGACGA*/gmode=CGAC0;/gmode=CGAC0;/*选用选用CGACGA图形模式图形模式*/initgraph(&gdriver,&gmode,“c:tc”);/initgraph(&gdriver,&gmode,“c:tc”);/*初始化图形系统初始化图形系统*/bar3d(30,20,200,120,0,0);/bar3d(30,20,200,120,0,0);/*画一实心矩形画一实心矩形*/getch();/getch();/*等待按一键结束等待
6、按一键结束*/closegraph();/closegraph();/*关闭图形系统,回到文本模式关闭图形系统,回到文本模式*/2023-4-29河北农业大学 张玉新6void far detectgraph(int*gdriver,int*gmode)/*不知道显示器类型的图形系统初始化*/#include graphics.h#include graphics.h main()main()int gdriver,gmodeint gdriver,gmode;detectgraph(&gdriver,&gmodedetectgraph(&gdriver,&gmode);/);/*测试结果存放
7、于测试结果存放于gdrivergdriver,gmodegmode中中*/if(gdriverif(gdriver0)0)printf(thereprintf(there is not graphics displayern);is not graphics displayern);exit(1);exit(1);/*无图形显示模式时,显示信息,停止程序无图形显示模式时,显示信息,停止程序*/printf(detect graphics driver is#%d,mode is#printf(detect graphics driver is#%d,mode is#%dn,gdriver,gm
8、ode%dn,gdriver,gmode););/*显示硬件测试结果显示硬件测试结果*/getch();/getch();/*等待按一键等待按一键*/initgraph(&gdriver,&gmode,“c:tc”);/initgraph(&gdriver,&gmode,“c:tc”);/*初始化初始化*/bar3d(30,20,200,120,0,0);/bar3d(30,20,200,120,0,0);/*画一实心矩形画一实心矩形*/getch();/getch();/*等待按一键结束等待按一键结束*/closegraph();/closegraph();/*关闭图形系统,回到文本模式关闭
9、图形系统,回到文本模式*/return(0);return(0);2023-4-29河北农业大学 张玉新7DETECT /*自动初始化图形系统自动初始化图形系统*/#include graphics.h#include“conio.h main()int gdriver=DETECT,gmode;/*自动搜寻显示器类型和显示模式*/initgraph(&gdriver,&gmode,“c:tc”);/*初始化*/bar3d(30,20,200,120,0,0);/*画一实心矩形*/getch();closegraph();return(0);2023-4-29河北农业大学 张玉新82)图形系统
10、的关闭void far closegraph()3)图形模式的控制int far getgraphmode()返回当前模式值。void far restorecrtmode();恢复屏幕在初始化前的模式。void far setgraphmode(int gmode);设置系统图形模式并清屏幕。Void far getmoderange(int driver,int*lomode,int*himode);获取图形驱动器可使用的模式范围。2023-4-29河北农业大学 张玉新91.4.图形坐标的设置图形坐标的设置l定点:定点:moveto(int x,int y);moverel(int x,i
11、nt y)l读取当前坐标位置:读取当前坐标位置:getx();gety();l读取读取x,y轴的最大值:轴的最大值:getmaxx();getmaxy();1.5.屏幕窗口操作屏幕窗口操作void far cleardevice()此操作是清除整个屏幕,并把当前光标位置重新设置为(0,0)。2023-4-29河北农业大学 张玉新106.图形颜色设置图形颜色设置设置背景色:void far setbkcolor(int color);设置作图色:void far setcolor(int color);有关屏幕颜色的符号常数表 符号常数 数值 含义 符号常数 数值 含义 BLACK 0 黑色 D
12、ARKGRAY 8 深灰 BLUE 1 兰色 LIGHTBLUE 9 深兰 GREEN 2 绿色 LIGHTGREEN 10 淡绿 CYAN 3 青色 LIGHTCYAN 11 淡青 RED 4 红色 LIGHTRED 12 淡红 MAGENTA 5 洋红 LIGHTMAGENTA 13 淡洋红 BROWN 6 棕色 YELLOW 14 黄色 LIGHTGRAY 7 淡灰 WHITE 15 白色2023-4-29河北农业大学 张玉新11#include#include void main()int x;int gdriver=DETECT,gmode;initgraph(&gdriver,&gmode,”);cleardevice();setbkcolor(9);for(x=160;x=480;x+=20)line(160,240,x,120);line(160,240,x,360);line(480,240,640-x,360);line(480,240,640-x,120);getch();closegraph();