• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
dlfen
博客园    首页    新随笔    联系   管理    订阅  订阅

C语言基本图形函数

C语言基本图形函数 基本图形函数包括画点,线以及其它一些基本图形的函数。本节对这些函数作一全面的介绍。

C语言基本图形函数
    基本图形函数包括画点,线以及其它一些基本图形的函数。本节对这些函数作一全面的介绍。  
一、画点
  
1. 画点函数    
    
void far putpixel(int x, int y, int color);    
    
该函数表示有指定的象元画一个按color 所确定颜色的点。对于颜色color的值可从表3中获得而对x, y是指图形象元的坐标。
    在图形模式下,是按象元来定义坐标的。对VGA适配器, 它的最高分辨率为
640x480,其中640为整个屏幕从左到右所有象元的个数,480 为整个屏幕从上到下所有象元的个数。屏幕的左上角坐标为(0,0),右下角坐标为(639, 479),水平方向从左到右为x 轴正向,垂直
方向从上到下为y轴正向。TURBO C的图形函数都是相对于图形屏幕坐标,即象元来说的。
    关于点的另外一个函数是:    
    
int far getpixel(int x, int y);    //它获得当前点(x, y)的颜色值。    
  
2. 有关坐标位置的函数    
  
int far getmaxx(void);           //返回x轴的最大值。    
    
int far getmaxy(void);           //返回y轴的最大值。    
    
int far getx(void);          //返回游标在x轴的位置。   
    
void far gety(void);         //返回游标有y轴的位置。    
    
void far moveto(int x, int y);    //移动游标到(x, y)点,不是画点,在移动过程中亦画点。    
    
void far moverel(int dx, int dy);    //移动游标从现行位置(x, y)移动到(x+dx, y+dy)的位置,移动过程中不画点。
二、画线
  
1. 画线函数
    TURBO C提供了一系列画线函数,下面分别叙述:    
  
void far line(int x0, int y0, int x1, int y1);    //画一条从点(x0, y0)到(x1, y1)的直线。    
    
void far lineto(int x, int y);    //画一作从现行游标到点(x, y)的直线。    
    
void far linerel(int dx, int dy);    //画一条从现行游标(x,y)到按相对增量确定的点(x+dx, y+dy)的直线。
    
void far circle(int x, int y, int radius);    //以(x, y)为圆心,radius为半径,画一个圆。    
    
void far arc(int x, int y, int stangle, int endangle, int radius);    //以(x,y)为圆心,radius为半径,从stangle开始到endangle结束
    //(用度表示)画一段圆弧线。在TURBO C中规定x轴正向为0 度,逆时针方向旋转一周, 依次为90,180, 270和360度(其它有关函数也按此规定,不再重述)。    
    
void ellipse(int x, int y, int stangle, int endangle, int xradius,int yradius);
    
//以(x, y)为中心,xradius,yradius为x轴和y轴半径,从角stangle 开始到endangle结束画一段椭圆线,当stangle=0,endangle=360时, 画出一个完整的椭圆。    
    
void far rectangle(int x1, int y1, int x2, inty2);    //以(x1, y1)为左上角,(x2, y2)为右下角画一个矩形框。    
    
void far drawpoly(int numpoints, int far *polypoints);    //画一个顶点数为numpoints,各顶点坐标由polypoints给出的多边形。
    //polypoints整型数组必须至少有2 倍顶点数个无素。每一个顶点的坐标都定义为x,y,并且x在前。值得注意的是当画一个封闭的多边形时,numpoints 的值取实际多边形的顶点数加一,并且数组polypoints中第一个和最后一个点的坐标相同。
下面举一个用drawpoly()函数画箭头的例子。
#include<stdlib.h>
#include<graphics.h>
int 
main()
{
    
int gdriver, gmode, i;
    
int arw[16]={200,102,300,102,300,107,330,
              
100,300,93,300,98,200,98,200,102};
    
gdriver=DETECT;
    
initgraph(&gdriver, &gmode, "c:\\caic\\bgi");
    
setbkcolor(BLUE);
    
cleardevice();
    
setcolor(12);       /*设置作图颜色*/
       
drawpoly(8, arw);   /*画一箭头*/
        
getch();
    
closegraph();
    
return 0;
}
设定线型函数
    在没有对线的特性进行设定之前,TURBO C 用其默认值,即一点宽的实线,但TURBO C 也提供了可以改变线型的函数。线型包括:宽度和形状。其中宽度只有两种选择:一点宽和三点宽。而线的形状则有五种。下面介绍有关线型的设置函数。
    
void far setlinestyle(int linestyle,unsigned upattern, int thickness);    //该函数用来设置线的有关信息,其中linestyle是线形状的规定,见下表。
          
有关线的形状(linestyle)
━━━━━━━━━━━━━━━━━━━━━━━━━
    符号常数             数值          含义
─────────────────────────
    SOLID_LINE             
0           实线
    DOTTED_LINE            
1           点线
    CENTER_LINE            
2           中心线
    DASHED_LINE            
3           点画线
    USERBIT_LINE           
4           用户定义线
━━━━━━━━━━━━━━━━━━━━━━━━━    thickness是线的宽度,见下表。
          有关线宽
(thickness)
━━━━━━━━━━━━━━━━━━━━━━━━━
     符号常数            数值           含义
─────────────────────────
     NORM_WIDTH           
1             一点宽
     THIC_WIDTH           
3             三点宽
━━━━━━━━━━━━━━━━━━━━━━━━━    
    对于upattern,只有linestyle选USERBIT_LINE 时才有意义 
(选其它线型,uppattern取0即可)。此进uppattern的16位二进制数的每一位代表一个象元,如果那位为  1. 则该象元打开,否则该象元关闭。
 
void far getlinesettings(struct linesettingstype  far *lineinfo);
    
该函数将有关线的信息存放到由lineinfo 指向的结构中,表中linesettingstype的结构如下:    
struct linesettingstype{
    
int linestyle;
    
unsigned upattern;
    
int thickness;
}
    
例如下面两句程序可以读出当前线的特性…….
    
struct linesettingstype *info;getlinesettings(info);
    
void far setwritemode(int mode);    
    
该函数规定画线的方式。如果mode=0,则表示画线时将所画位置
的原来信息覆盖了
(这是TURBO C的默认方式)。如果mode=1, 则表示画线时用现在特性的线与所画之处原有的线进行异或(XOR)操作, 实际上画出的线是原有线与现在规定的线进行异或后的结果。因此,当线的特性不变,进行两次画线操作相当于没有画线。
有关线型设定和画线函数的例子如下所示。


#include<stdlib.h>
#include<graphics.h>
int 
main()
{
    
int gdriver, gmode, i;
    
gdriver=DETECT;
    
initgraph(&gdriver, &gmode, "c:\\caic\\bgi");
    
setbkcolor(BLUE);
    
cleardevice();
    
setcolor(GREEN);
    
circle(320, 240, 98);
    
setlinestyle(0, 0, 3);   /*设置三点宽实线*/
       
setcolor(2);
    
rectangle(220, 140, 420, 340);
    
setcolor(WHITE);
    
setlinestyle(4, 0xaaaa, 1);  /*设置一点宽用户定义线*/
        
line(220, 240, 420, 240);
    
line(320, 140, 320, 340);
    
getch();
    
closegraph();
    
return 0;
 }

posted @ 2008-07-18 20:40  七夜鱼  阅读(1276)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3