论坛交流
首页办公自动化| 网页制作| 平面设计| 动画制作| 数据库开发| 程序设计| 全部视频教程
应用视频: Windows | Word2007 | Excel2007 | PowerPoint2007 | Dreamweaver 8 | Fireworks 8 | Flash 8 | Photoshop cs | CorelDraw 12
编程视频: C语言视频教程 | HTML | Div+Css布局 | Javascript | Access数据库 | Asp | Sql Server数据库Asp.net  | Flash AS
当前位置 > 文字教程 > C语言程序设计教程
Tag:新手,函数,指针,数据类型,对象,Turbo,入门,运算符,数组,结构,二级,,tc,游戏,试题,问答,编译,视频教程

C语言教程:c语言绘图的笔记

文章类别:C语言程序设计 | 发表日期:2010-10-29 9:28:46

C语言教程:c语言绘图的笔记

使用图形函数
1.必须包含头文件<graphics.h>
2.保证系统能找到显示图形驱动程序*.BGI
3.将TC集成开发环境Options菜单中Linker项中的Graphics Lib选为on
只有做完这三步才能保证正确编译图形应用程序
屏幕颜色的设置 
设置当前背景色:void far setbkcolor(int color); 
设置当前作图色:void far setcolor(int color); 
对于EGA或者VGA显示适配器,有关颜色的符号常数及数值如下: 
BLACK 0 黑色 
BLUE 1 蓝色 
GREEN 2 绿色 
CYAN 3 青色 
RED 4 红色 
MAGENTA 5 洋红 
BROWN 6 棕色 
LIGHTGRAY 7 淡灰 
DARKGRAY 8 深灰 
LIGHTBLUE 9 深蓝 
LIGHTGREEN 10 淡绿 
LIGHTCYAN 11 淡青 
LIGHTRED 12 淡红 
LIGHTMAGENTA 13 淡洋红 
YELLOW 14 黄色 
WHITE 15 白色 
如果不设定颜色,则默认的北京颜色是0,也就是黑色背景;默认的画笔颜色是15,也就是白色另外还有几个获取现行颜色设置情况的函数: 
int far getbkcolor(void); 
int far getcolor(void); 
int far getmaxcolor(void); 
直接对点进行处理的函数: 
int far getpixel(int x, int y);/*取得点(x,y)的颜色 
void far putpixel(int x, int y, int pixelcolor);/*在(x,y)处画一个指定颜色的点
坐标和画笔: 
图形模式屏幕的左上角是坐标原点(0,0),水平方向向右是X轴,垂直方向向下为Y轴。因为图形显示器和显示模式不同,X、Y坐标的最大值不同。两个函数可以取得这两个最大值: 
int far getmaxx(void); 
int far getmaxy(void); 
这两个函数在自动检测分辨率时非常有用。 
int far getx(void);/*返回画笔在x轴的位置 
int far gety(void);/*返回画笔在y轴的位置 
int far moveto(int x, int y);/*移动画笔到x,y所在的位置,不在屏幕上留下痕迹。 
int far moverel(int dx, int dy);/*从当前画笔位置(x,y)移动到(x+dx,y+dy)去。属于相对当前点的移动。 
void far linerel(int dx, int dy);/*画线函数 

TC中的画线函数 
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); 
/*以(x,y)为圆心,radius为半径,从stangle到endange结束(用度表示)画一段圆弧线。在Turbo C中规定x轴正向为0度,逆时针方向旋转一周,依次为90,180,270和360度。 
void ellipse(int x, int y,int stangle, int endangle, int xradius, int yradius);/*椭圆线,stangle=0,endangle=360时为一个完整的椭圆 
void far rectangle(int x1, int y1, int x2, int y2); 
void far drawpoly(int numpoints, int far *polypoints);
TC中的线形设定 
setlinestyle()函数用于设定线形 
getlinessetings()函数用于读出当前线形 
void far setlinestyle(int linestyle, unsigned upattern, int thickness); 
线的形状 
SOLID_LINE 0 实线 
DOTTED_LINE 1 点线 
CENTER_LINE 2 中心线 
DASHED_LINE 3 点画线 
USERBIT_LINE 4 用户定义线 
线的宽度(仅两种) 
NORM_WIDTH 1 一点宽 
THICK_WIDTH 3 三点宽 
void far getlinessetings(struct linesettingstype far *lineinfo); 
struct linesettingstype 
{int linestyle; 
 unsigned upattern; 
 int thickness; 

下面两句代码可以读出当前线的特性 
struct linesettingstype *info; 
getlinesettings(info); 
另外还有一个对画线特性的规定: 
void far setwritemode(int mode); 
如果mode=0,则表示画线时将所画位置的原图形覆盖(默认方式),如果mode=1,则表示画线时用现在特性的线与原有的线进行异或操作,实际上画出的线是原有线与现在规定的线进行异或后的结果。因此,当线的特性不变时,进行两次画线操作相当于画一次线然后擦除。如果用mode=1进行重画并不影响背景图像。也就是说,假如做一个动画,背景是静止的,前景是运动的,那我么只要不断对前景进行异或,前景就会不断变化而不影响背景。
填充和填充模式
1先画轮廓再填充
 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 stangle, int xradius, int yradius);
2规定填充模式
 向封闭区域内填充有12种模式。
 void far setfillstyle(int pattern, int color);
 名字 值 意义
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_DOT_FILL 11 以密集点填充
USER_FILL 12 以用户定义式样填充
 void far setfillpattern(char *upattern, int color);
其中upattern是一个指向8个字节的指针。这8个字节定义了8*8点阵的图形。每个字节的8位二进制数表示水平8个点,8个字节共表示8行,然后依次为模型向整个封闭区域填充
 void far getfillpattern(char *upattern);
该函数将用户自定义的填充花样存入upattern指针指向的内存区域
 void far getfillsetings(struct fillsettingstype far *fillinfo);
 struct fillsettingstype
 {int pattern;
 int color;
 }
3淹没式填充
 void far floodfill(int x, int y, int border);
 注意两点:
 (1),种子的位置一定要在封闭区域之内
 (2),floodfill函数的第三个参数边框颜色一定要写对

视频教程列表
文章教程搜索
 
C语言程序设计推荐教程
C语言程序设计热门教程
看全部视频教程
购买方式/价格
购买视频教程: 咨询客服
tel:15972130058