TC中使用图形函数的基本知识
我很想成一个知识很丰富的程序员,可所有的知识都要一点一点的学。 平时只写过作业式的程序的中国教育模式下的大学生来说,根本就没有任何用图形的经历,我甚至连要使用图形学要什么头文件都不知道。在网上查了些文章,最后找到了王大刚老师的<C语言编程宝典>这篇文章介绍了许多很有用的基本知识。
首先就是如果要在TC中使用图形化界面,需要"#include<graphics.h>",并且在main函数的开头写上:
void main()
{
int gdriver,gmode;
detectgraph(& gdriver,& gmode)
initgraph(& gdriver, & gmode,"c:\\turboc2");
}
在结尾处写上: closegraph(); 而且如果希望程序运行完毕并不立即结束,最好是在程序的最后写上:getch();
另外可以使用如下的函数来改变图形线条的颜色和背景颜色。
setcolor(int);setbkcolor(int);中数值含义为:
BLACK 0 黑色 DARKGRAY 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 白色
cleardevice();可以清楚屏幕内容。
现在介绍一些画图形的函数。
putpixel(int x, int y, int color); 画点。其中x,y是该点的横纵坐标。在TC中屏幕是按640*480的分辨率来计算坐标的。
line(int x0,int y0,int x1,int y1); 画一条从点(x0, y0)到(x1, y1)的直线。
circle(int x, int y, int radius); 以(x, y)为圆心, radius为半径, 画一个圆。
arc(int x, int y, int stangle, int endangle, int radius); 以(x, y)为圆心, radius为半径, 从stangle开始到endangle结束(用度表示) 画一段圆弧线。
rectangle(int x1, int y1, int x2, inty2); 以(x1, y1)为左上角, (x2, y2)为右下角画一个矩形框。
drawpoly(int numpoints, int far *polypoints); 画一个顶点数为numpoints,各顶点坐标由polypoints 给出的多边形。polypoints整型数组必须至少有2倍顶点数个无素。每一个顶点的坐标都定义为x, y, 并且x在前。值得注意的是当画一个封闭的多边形时, numpoints 的值取实际多边形的顶点数加一, 并且数组polypoints中第一个和最后一个点的坐标相同。
bar(int x1, int y1, int x2, int y2); 确定一个以(x1, y1)为左上角, (x2, y2)为右下角的矩形窗口,再按规定图模和颜色填充。
bar3d(int x1, int y1, int x2, int y2, int depth, int topflag);当topflag为非0时, 画出一个三维的长方体。当topflag为0时, 三维图形不封顶, 实际上很少这样使用。
下面举个例子,我们来画一个长方形。我们可以这么做,先用setfillstyle(1,2);再用bar3d(10,10,20,20,4,1)就用2的颜色画了一个长方形。(其中的1,2下面我再说明。)我们还可以这么做,用rectangle(10,10,20,20)但还需要用floodfill(15,15,3)来填充。(假设前景色为3)。setfillstyle(int,int)中的两个参数是这样规定的:
setfillstyle(int pattern, int color);
pattern的设置如下:
EMPTY_FILL 0 以背景颜色填充
SOLID_FILL 1 以实填充
LINE_FILL 2 以直线填充
LTSLASH_FILL 3 以斜线填充(阴影线)
SLASH_FILL 4 以粗斜线填充(粗阴影线)
BKSLASH_FILL 5 以粗反斜线填充(粗阴影线)
LTBKSLASH_FILL 6 以反斜线填充(阴影线)
HATCH_FILL 7 以直方网格填充
XHATCH_FILL 8 以斜网格填充
INTTERLEAVE_FILL 9 以间隔点填充
WIDE_DOT_FILL 10 以稀疏点填充
CLOSE_DOS_FILL 11 以密集点填充
USER_FILL 12 以用户定义式样填充
color就是画图的边框颜色,其数值含义同前面介绍的定义一样。
最后是如何在图形界面输出文字,需要"#include<conio.h>"然后加上outtextxy(int x,int y,char * s);s为要输出的字符串。其中有可能要用到sprintf(s, "You want to show the number is %d", num); 这里s应是字符串指针或数组, num为整型变量。
就写这些了,如果还想了解更多的内容请参看王大刚老师的<C语言编程宝典>