精华内容
下载资源
问答
  • C语言图形函数

    千次阅读 2016-03-02 11:33:04
    C语言图形函数(一) C语言图形编程(一,字符屏幕) 一,屏幕操作函数 1. clrscr()清除字符窗口函数 2. window()字符窗口函数 3. gotoxy()光标定位函数 4. clreol() 清除光标行尾字符函数 5. insline() ...
    
    C语言图形函数(一)
    C语言图形编程(一,字符屏幕)
    一,屏幕操作函数
    1. clrscr()清除字符窗口函数
    2. window()字符窗口函数
    3. gotoxy()光标定位函数
    4. clreol() 清除光标行尾字符函数
    5. insline() 插入空行函数
    6. delline() 删除一行函数
    7. gettext() 拷进文字函数
    8. puttext() 拷出文字函数
    9. movetext() 移动文字函数
    二,字符属性函数
    10. textmode() 文本模式函数
    11. highvideo()高亮度函数
    12. lowvideo() 低亮度函数
    13. normvideo(void);
    14. textcolor() 文本颜色函数
    15. textattr() 文本属性函数
    16.textbackground() 文本背景函数
    三, 屏显状态函数
    17. wherex() 光标处x坐标函数
    18. wherey() 光标处y坐标函数
    19. gettextinfo() 获取文本窗口信息函数
    在Borland C++里面提供了字符屏幕和图形函数.字符屏幕的核心是窗口(Window),它是屏幕的活动部分,字符输出或显示在活动窗口中进行.窗口在缺省时,就是整个屏幕.窗口可以根据需要指定其大小.同样,对图形函数的操作,也提供了(Viewport).也就是说图形函数的操作都是在视口上进行.图形视口与字符窗口具有相同的特性,用户可以在屏幕上定义大小不同的视口,若不定义视口大小,它就是整个屏幕.
    窗口是在字符屏幕下的概念,只有字符才能在窗口中显示出来,这时用户可以访问的最小单位为一个字符.视口是在图形屏幕状态下的概念,文本与图形都可以在视口上显示,用户可访问的最小单位是一个像素(像素这一术语最初用来指显示器上最小的,单独的发光点单元.然而现在,其含义拓宽为指图形显示器上的最小可访问点).
    字符和图形状态下,屏幕上的位置都是由它们的行与列所决定的.有一点须指出:字符状态左上角坐标为(1,1),但图形左上角坐标为(0,0).
    了解字符屏幕和图形函数与窗口和视口的关系是很重要的.例如,字符屏幕 光标位置函数gotoxy()将光标移到窗口的x,y位置上,这未必是相对于整个屏幕.下面介绍常用的几类字符屏幕函数的功能用途,操作方法及其例行程序.
    一,屏幕操作函数
    编写程序绘图经常要用到对字符屏幕进行操作.例如,在往屏幕上写字符之前,首先要将屏幕清除干净.又如,有时需要在屏幕上多处写上肉中刺样的字符内容,这时最好用屏幕拷贝来高效率地完成这一任务.对这些操作,Borland C++提供了一系列字符屏幕操作函数来实现.
    1. clrscr()清除字符窗口函数
    功能:函数clrscr()清除整个当前字符窗口,并且把光标定位于左上角(1,1)处.
    用法:此函数调用方式为 void clrscr(void);
    说明:括号中void 表示无参数.
    该函数相应的头文件为conio.h
    返回值:无
    例:使用这个函数的例子见4.clreol()函数的实例中.
    2. window()字符窗口函数
    功能: 函数window()用于在指定位置建立一个字符窗口.
    用法: 此函数调用方式为 void window(int left,int top,int right,int bottom);
    说明: 函数中参数left,top为窗口左上角坐标;right,bottom为其右下角坐标.
    若有一个坐标是无效的,则window()函数不起作用.一旦该函数调用成功,那么所有定位坐标都是相对于窗口的,而不是相对于整个屏幕.但是建立窗口所用的坐标总是相对整个屏幕的绝对坐标,而不是相对当前窗口的相对坐标.这样用户就可以根据各种需要建立多个互不嵌套的窗口.
    此函数的头文件为conio.h.
    返回值:无
    例: 调用这个函数的实现例见3.gotoxy()函数的例子中.
    3. gotoxy()光标定位函数
    功能: 函数gotoxy()将字屏幕上的光标移到当前窗口指定的位置上.
    用法: 这个函数调用方式为void gotoxy(int x,int y);
    说明: 括号里x,y是, 光标定位的坐标,如果其中一个坐标值无效(如坐标超界),那么光标不会移动.
    此函数在字符状态(有时称为文本状态)下经常用到 ,其相应的头文件为conio.h
    返回值:无
    例: 下面程序建立两个窗口,然后在窗口里显示字符,字符的位置是调用该函数确定的.
    #include"conio.h>
    void border(int startx,int starty,int endx,int endy)
    {
    register int i;
    gotoxy(1,1);
    for(i=0;i<=endx-startx;i++)
    putch('-');
    gotoxy(1,endy-starty);
    for(i=0;i<=endx-startx;i++)
    putch('-');
    for(i=2;i
    void main()
    {
    register int i;
    gotoxy(6,8);
    printf("This is a test of the clreol() function.");
    getch();
    gotoxy(6,8);
    clreol();
    for(i=0;i<20;i++)
    printf("Hello\n");
    getch();
    clrscr();
    }
    5. insline() 插入空行函数
    功能: 函数insline()插入一空行到当前光标所在行上,同时光标以下的所有行都向下顺移一行.
    用法: 此函数的调用方式为void insline(void);
    说明: 该函数只用于文本方式,并且在当了符窗口才有效.
    这个函数的对应头文件是 conio.h
    返回值:无
    例: 程序给出了insline()函数的用法.
    #include "conio.h"
    void main()
    {
    registser int i;
    clrscr();
    for(i=1;i<24;i++)
    {
    gotoxy(1,i);
    printf("This is line %d\n",i);
    }
    getch();
    gotoxy(1,10);
    insline();
    getch();
    }
    6. delline() 删除一行函数
    功能: 函数delline()删除当前窗口内光标所在行,同时把该行下面 所有行都上移一行.
    用法: 此函数调用方式为 void delline(void);
    说明: 注意,如果当前窗口小于整个屏幕,那么该函数只影响到窗口内的字符.
    这个函数相应的头部文件是conio.h
    返回值: 无
    例:先在屏幕上显示16行文字,然后删除第4行
    #include "conio.h"
    void main()
    {
    register int i;
    clrscr();
    for(i=0;i<16;i++) printf("line %d\n",i);
    getch();
    gotoxy(1,4);
    delline();
    getch();
    }
    7.gettext() 拷进文字函数
    功能: 函数gettext()用于文本状态下将屏幕上矩形域内的文字拷进内存.
    用法: 该函数调用方式为 int gettext(int left,int top,int right,int bottom,void *buffer);
    说明: 函数中参数left,top为矩形区域的左上角坐标,right,bottom为其右下角坐标,这些坐标是屏幕的绝对坐标,不是窗口的相对坐标.buffer指针必须指向一个足够保存该矩形域内文字的内存.所用内存大小按下式计算:
    点头用字节数=矩形哉内的行数×矩形域的列数×2
    这里将行数乘以列数再乘以2的原因是保存屏幕上每个字符要用两个字节存储单元,一个字节存储单元存放字符本身,而另一个存放其属性.
    此函数相应的头文件是 conio.h
    返回值: 若函数调用成功则返回1,否则返顺0.
    例: 把屏幕左上角点(1,1)和右下角点(10,10)的区域拷贝到buf指向的内存中去.
    buf=(char *)malloc(10*10*2);
    if(!buf)gettext(1,1,10,10,buf);
    8. puttext() 拷出文字函数
    功能: 函数puttext()把先前由gettext()保存到buffer指向的内存中的文字拷出到屏幕上一个矩形区域中.
    用法: 此函数调用方式为 int puttext(int left,int top,int right,int bottom,void *buffer);
    说明: 函数里left,top为给出的屏幕上矩形区域的左上角点,right,bottom为其右下角点,其坐标是用屏幕的绝对坐标,而不是用窗口的相对坐标.
    该函数相应的头文件为conio.h
    返回值: 函数调用成功返回值为1,否则返回0.
    例: 屏幕上某个区域内容拷进buf指向的内存中,然后又将这些文字拷出到屏幕上新位置.
    buf=(char *)malloc(10*10*2);
    gettext(1,1,10,10,buf);
    puttext(16,16,30,30,buf);
    9. movetext() 移动文字函数
    功能: 函数movetext()将屏幕上一个矩形区域的文字移到另一个区域上.
    用法: 该函数调用方式为 int movetext(int left,int top,int right,int bottom,int newleft,int newtop);
    说明: 上面left,top为矩形区域上角坐标,right,bottom为其右下角坐标,newleft,newright为移动到区域左上角坐标.这些坐标是屏幕的绝对坐标,不是窗口的相对坐标.
    若要把屏幕上一段文字移到屏幕的另一位置,那么使用movetext()函数比用gettext()然后再用puttext()效率更高.
    此函数相应的头文件是conio.h
    返回值: 如果有一个以上坐标无效,那么函数返回值为0,否则返回1.
    列: 把屏幕左上角点(8,8),右下角点(20,20)的矩形区域文字移动到左上角点(10,10)的位置上:
    movetext(8,8,20,20,10,10);
    10. textmode() 文本模式函数
    功能: 函数textmode()针屏幕设置为文本模式(或者说字符状态).
    用法: 函数调用方式为 void textmode(int mode);
    说明: 参数mode必须为表1-2中所示的模式之一⑴以用模式名(符号值),也可以用其等价的整数值.
    表1-2 文本模式
    ----------------------------------------------------------------
    模式名(符号值) 等价整数值 说 明
    BW40 0 40列黑白
    C 40 1 40列彩色
    BW80 2 80列黑白
    C 80 3 80列彩色
    MONO 7 80列单色
    LASTMODE -1 上次模式
    ----------------------------------------------------------------
    调用该函数后,屏幕复位,并且所有字符的属性恢复其缺省值.
    此函数对应的头文件是conio.h
    返回值: 无
    例: 把屏幕设置为80列彩色模式
    textmode(C80);
    二,字符属性函数
    用户可以设置字符显示的高亮度或低亮度的写的符闪烁及其背景颜色等.具有这些操作的函数称为字符属性函数.除了仅支持单模式和单色的显示卡外,字符属性函数适用于其余所有的显示卡.
    11. highvideo()高亮度函数
    功能: 函数highvideo()设置屏幕为高亮度显示.
    用法: 此函数调用方式为void highvideo(void);
    说明: 调用该函数后,写到屏幕上的字符是高亮度的.此函数只适用于文本模式状态(或说字符屏幕状态).
    这个函数对应的头文件为 conio.h
    返回值: 无
    例: 设置屏幕显示为高亮度的.
    highvideo();
    12. lowvideo() 低亮度函数
    功能: 函数lowvideo()设置屏幕为低亮度显示.
    用法: 该函数调用方式为void lowvideo(void);
    说明: 调用该函数后,此时写到屏幕上的字符是低亮度的.这个函数只适用于文本模式状态(或说字符屏幕状态).
    此函数相应的头文件是 conio.h
    返回值: 无
    例: 设置屏幕显示为低亮度的
    lowvideo();
    13. normvideo(void);
    功能: 函数normvideo()设置屏幕为正常亮度显示.
    用法: 这个函数调用方式为void normvideo(void);
    说明: 调用该函数后,此时写到屏幕上的字符是正常亮度的,该函数只适用于文本模式状态(或说字符状屏幕状态).
    此函数相应的头文件为conio.h
    返回值: 无
    例: 设置屏幕显示为正常亮度.
    normvideo();
    14. textcolor() 文本颜色函数
    功能: 函数textcolor()设置字符屏幕下文本颜色(或字符颜色),它也可以用于使字符闪烁.
    用法: 这个函数调用方式为void textcolor(int color);
    说明: 函数中参数color的有效值可取表1-3中的颜色名(即宏名)或等价值.
    表1-3 颜色名与等价值
    ---------------------------------------------------
    名 等价值 含 义
    BLACK 0 黑
    BLUE 1 蓝
    GREEN 2 绿
    CYAN 3 青
    RED 4 红
    MAGENTA 5 洋红
    BROWN 6 棕
    LIGHTGRAY 7 淡灰
    DRAKGRAY 8 深灰
    LIGHTBLUE 9 淡蓝
    LIGHTGREEN 10 淡绿
    LIGHTCYAN 11 淡青
    LIGHTRED 12 淡红
    LIGHTMAGENTA 13 淡洋红
    YELLOW 14 黄
    WHITE 15 白
    BLINK 128 闪烁
    ------------------------------------------------------------
    textcolor()函数执行后,只影响其后输出探险符颜色,而不改变已经在当前屏幕上的其它字符颜色.显然,如果需要输出的字符闪烁,只要将函数中参数color取为BLINK即可,如果要使字符带颜色闪烁,就必须将所选的颜色值与128作"或"运算.
    此函数相应的头文件是 conio.h
    返回值: 无
    例: 下面程序段中第一条语句使输出的字符闪烁,第三条语句使字符输出为经色同时闪烁:
    textcolor(BLINK);
    printf("hello");
    textcolor(RED|BLINK);
    15. textattr() 文本属性函数
    功能: 函数textattr()用于设置文本属性,即字符背景颜色,字符本身颜色和字符闪烁与否.
    用法: 函数调用方式为void textattr(int attribute);
    说明: 设置字符背景颜色属性字节的最简单方法是,用所选的背景颜色值乘以16再与字符颜色值作按位或(OR)运算.例如需要红色背景,绿色字符,就设置成RED*16|GREEN,若还要字符闪烁,就把背景颜色值,字符颜色值与闪烁值一起
    按位作或运算.如蓝背景,黄字符且闪烁,就设置成为:
    YELLO|128|BLUE*16
    第0位用于设置字符颜色.
    此函数相应的头文件为conio.h
    返回值: 无
    例: 设置背景为蓝色,字符为红色并且字符闪烁:
    textattr(RED|128|BLUE*16);
    16.textbackground() 文本背景函数
    功能: 函数textbackground()设置字符屏幕下文本背景颜色(或字符背景颜色).
    用法: 此函数调用方式为void textbackground(int bcolor);
    说明: 参数bcolor 的有效值取表1-4背景颜色(即宏名)或等价值.
    表1-4 背景颜色与等价值
    -------------------------------------------------
    背景颜色 等价值 含 义
    -------------------------------------------------
    BLACK 0 黑
    BLUE 1 蓝
    GREEN 2 绿
    CYAN 3 青
    RED 4 红
    MAGENTA 5 洋红
    BROWN 6 棕
    -------------------------------------------------
    调用该函数只影响后续写的字符背景颜色,而不改变当前显示在屏幕上的字符背景颜色.
    这个函数对应的头文件是conio.h
    返回值: 无
    例: 设置文本背景颜色为蓝色:
    textbackground(BLUE));
    三, 屏显状态函数
    这里提供三个在文本模式下屏幕显示状态的函数
    17. wherex() 光标处x坐标函数
    功能: 函数wherex()返回当前窗口中光标处横向坐标.
    用法: 此函数调用方式为int wherex(void);
    说明: 这个函数调用无参数,其对应的头文件是conio.h
    返回值: 函数调用成功,返回光标处x坐标值.
    例: 调用这个函数的实例见18.wherey()函数的例中.
    18. wherey() 光标处y坐标函数
    功能: 函数wherey()返回当前窗口中光标处纵向坐标.
    用法: 该函数调用方式为int wherey(void);
    说明: 此函数调用无参数,其相应的头文件是conio.h
    返回值: 函数调用成功,返回光标处y坐标值.
    例: 调作函数wherex()与wherey(),返回当前光标处x坐标与y坐标,并赋给整型变量xpos ,ypos.
    int xpos,ypos;
    xpos=wherex();
    ypos=wherey();
    19. gettextinfo() 获取文本窗口信息函数
    功能: 函数gettextinfo()获取当前文本窗口信息,并存放在实参结构中.
    用法: 函数调用方式为void gettextinfo(struct text-info *info);
    说明: 函数中参数info 为struct text-info结构型指针,struct text-info结构在此函数相应的头文件中定义为:
    struct text-info{
    unsigned char winleft; // 窗口左上角x坐标
    unsigned char wintop; // 窗口左上角y坐标
    unsigned char winright; // 窗口右下角x坐标
    unsigned char winbottom; // 窗口右下角y坐标
    unsigned char attribute; // 文本属性
    unsigned char normattr; // 正常属性
    unsigned char currmode; // 当前屏显模式
    unsigned char screenhight // 文本窗口高度(以行数计)
    unsigned char screenwidth; // 文本窗口宽度(以字符个数计)
    unsigned char curx; // 光标处x坐标
    unsigned char cury; // 光标处y坐标
    };
    记住,调用函数gettextinfo()时,要传递struct text-info结构型指针或该结构的首地址,不要传递结构变量本身.
    这个函数对应的头文件是conio.h
    返回值: 返回文本窗口角点坐标,高宽度,文本属性等值,并存放在info所指向的结构变量中.
    例: 程序语句说明如何正确调用gettextinfo()函数:
    struct text-info win-status;
    gettextinfo(&win-status);
    C语言图形编程(二,图形显示)
    一,确定显示卡
    二,选择显示模式
    三,图形显示
    20. detectgraph() 显示卡检测函数
    21. initgraph() 图形初始化函数
    22. getdrivername() 获取图形驱动程序名的指针
    23. getgraphmode() 获取图形模式函数
    24. getmoderange()获取模式值范围函数
    25. getmaxmode()获取最大显示模式函数
    26. getmodename()获取显示模式名函数
    27. graphdefaults()图形设置复位缺省值函数
    28. setgraphmode() 设置图形模式函数
    29. restorecrtmode() 恢复文本显示模式函数
    30. graphresult() 图形操作结果函数
    31. grpaherrormsg() 图形错误信息函数
    32. setgraphbufsize()设置图形缓冲区大小函数
    33. setactivepage() 设置可输出显示页函数
    34. setvisualpage() 设置可见显示页数
    35. closegraph()关闭图形模式函数

    一,确定显示卡
    微机系统显示部分由显示器(monitor)和显示卡(adapter)两部分组成.显示器是独立于主机的一种外部设备,显示卡或称显示适配卡,也有的称图形卡,是插在主机上的一块电路板.但也有的显示卡与主机板设计在一起.显示卡包括寄存器组,存储器和控制电路三大部分.其中存储器又包括显示RAM和ROM BIOS两部分,微机对显示屏幕的所有操作都是通过显示卡来实现的.因此要进行图形显示 ,首先要确定计算机上安装的是何种显示卡.一种方法是询问计算机或终端使用者,确定将要使用的显示卡类型.这种方法很难,因为甚至专业程序员也不总是能确定他正在使用什么样的硬件.另一种方法是用软件查询硬件以识别当前的配置.如果有一些识别硬件的标准,这就很简单了.在Borland C中对现在所使用的各种显示卡提供了支持,这只要调用detectgraph()函数就可以了,该函数为程序员确定计算机上使用的显示卡类型.
    二,选择显示模式
    显示模式是指显示卡支持的分辨率与相应的颜色配置.每台计算机都配置了某种类型显示卡,可以为该显示卡指定显示模式.
    三,图形显示
    进行图形显示首先要确定显示卡,然后选择其显示模式.这些工作都可以调用图形功能函数来完成,其实就是把适合于显示卡的图形驱动程序装入内存.如果图形驱动程序未装入内存,那么图形函数就不能操作.
    20. detectgraph() 显示卡检测函数
    功能: 函数detectgraph()在计算机上安装有显示卡的情况下,测定其显示卡的类型.
    用法: 此函数调用方式为void detectgraph(int *driver,int *mode);
    说明: 函数把driver所指向的整型变量设置为图形驱动程序的代码,把mode所指向的整型变量设置为显示卡支持的最高有效模式(即该显示卡能支持的最高分辨率).
    该函数相应的头文件为graphics.h
    返回值: 返回适合于该显示卡的图形驱动程序的代码(也称等价值),并存放在driver指向的变量中.若计算机系统中无图形硬件,则由driver指向的变量设置为-2.
    例: 检测计算机是否装有显示卡:
    int driver,mode;
    detectgraph(&driver,&mode);
    if(driver==-2)
    {
    printf("no graphics adapter in the computer");
    exit(1);
    }
    21. initgraph() 图形初始化函数
    功能: 函数initgraph()用于初始化图形系统,把适合的图形驱动程序装入内存,设置图形函数所用的显示模式.
    用法: 该函数调用方式为void initgraph(int *driver,int *mode,char *path);
    说明: 1) 函数中参数driver指向图形驱动程序(或者等价值).
    在头部文件graphics.h中定义了图形驱动程序的宏名与其等价 ,如下:
    宏 名 等价值
    ------------------------------
    DETECT 0
    CGA 1
    MCGA 2
    EGA 3
    EGA64 4
    EGAMONO 5
    IBM8514 6
    HERCMONO 7
    ATT400 8
    VGA 9
    PC3270 10
    --------------------------------
    注:在现在的计算机中,上表中的许多显示卡已经过时,不再使用.
    这样就不必担心图形驱动程序的准确名字,而只要用其等价值即可,若使用detect(即等价值0)时,initgraph()函数自动检测当前计算机中装有的显示卡类型,并且选用最大分辨率的显示模式.
    2)参数mode指向显示模式或用等价值(风表1-5),mode所指的值必须是有效模式之一.
    3)参数path指向图形驱动程序所在的路径,例如path="C:\TC\BG1".若没有指定路径,就在当前目录下寻找.
    一般图形驱动程序包含在.BGI文件中,这些文件是系统可以得到的.这个函数对应的头文件是graphics.h.
    返回值: 无
    例: 调用initgraph()自动检测硬件图形系统,并选用最大分辨率显示模式.
    init drver,mode;
    driver=DETECT;
    mode=0;
    initgraph(&driver,&mode,"");
    22. getdrivername() 获取图形驱动程序名的指针
    功能: 函数getdrivername()返回指向当前图形驱动程序名的指针.
    用法: 此函数调用方式为char *getdrivername(void);
    说明: 本函数可以用来检测显示卡,但只能在initgraph()设置图形驱动程序和显示模式之后调用.
    该函数相应的头文件为graphics.h
    返回值: 返回一指针,指向含有当前图形驱动程序名的字符串.
    例: 显示当前图形驱动程序名:
    #include
    #include
    void main()
    {
    int graphdriver=DETECT,graphmode;
    char *s;
    initgraph(&graphdriver,&graphmode,"");
    s=getdrivername();
    outtext("Using driver:");
    outtext(s);
    getch();
    closegraph();
    }
    23. getgraphmode() 获取图形模式函数
    功能: 函数getgrapgmode()返回当前图形模式.
    用法: 该函数调用方式为int getgraphmode(void);
    说明: getgraphmode()函数无参数调用.
    这个函数对应的头文件是graphics.h
    返回值: 返回initgraph()或setgraphmode()所设置的当前图形模式值.
    例: 显示当前图形模式的代码:
    printf("graphics mode is %d",getgraphmode());
    24. getmoderange()获取模式值范围函数
    功能: 函数getmoderange()返回指定的图形驱动程序能够支持的最低和最高模式值.
    用法: 函数调用方式为 void getmoderange(int driver,int *lowmode,int himode);
    说明: 参数driver是用来调用此函数时,指定图形驱动程序等价值或宏名.
    其有效值如下:
    -------------------------------------
    宏 名 等价值
    -------------------------------------
    DETECT0
    CGA1
    MCGA2
    EGA3
    EGA644
    EGAMONO5
    IBM85146
    HERCMONO7
    ATT4008
    VGA9
    PC327010
    -------------------------------------
    注:上表中的许多显示卡在现在的计算机上已经过时,仅作参考.
    该函数想应的头文件为graphics.h
    返回值: 返回的最小和最大有效值存放在参数指针lowmode和himode分别指向的整型变量中.
    例: 显示当前图形硬件的显示模式的范围值:
    #include"graphics.h"
    void main()
    {
    int driver,mode;
    int low,high;
    mode=0;
    initgraph(&driver,&mode,"");
    getmoderange(driver,&low,&high);
    printf("mode range:%d--%d,low,high);
    getch();
    rstorecrtmode();
    }
    25. getmaxmode()获取最大显示模式函数
    功能: 函数getmaxmode()返回当前加载的图形驱动程序所支持的最大有效显示模式.
    用法: 函数调用方式为int getmaxmode(void);
    说明:本函数无参数调用,返回图形驱动程序所支持的最大显示模式,所有图形驱动程序支持从0到getmaxmode()函数返回值中的任一整 数值(对应的显示模式).
    这个函数对应的头文件是graphics.h
    返回值:返回图形驱动程序所支持的显示模式最大值.
    例: 显示当前最大显示模式:
    printf("The maxmode of this driver is %d\n",getmaxmode());
    26. getmodename()获取显示模式名函数
    功能: 函数getmodename()可获取当前图形驱动程序支持的指定显示模式的名字.
    用法: 此函数调用方式为char *getmodename(int modecode);
    说明: 参数modecode为整型值.用以指定一显示模式值调用该函数.
    这个函数对应的头文件graphics.h
    返回值: 返回指定模式值的显示模式名.
    例: 显示当前最大显示模式名:
    #include
    #include
    void main()
    {
    int graphdriver=DETECT,graphmode;
    int modecode;
    char *s;
    initgraph(&graphdriver,&graphmode,"");
    modecode=getmaxmode();
    s=getmodename(modecode);
    outtext("The maxmode name is:");
    outtext(s);
    getch();
    closegraph();
    }
    27. graphdefaults()图形设置复位缺省值函数
    功能: 函数grpahdefaults()把所有图形设置复位为它们的缺省值,这包括把图形视口复位为全屏幕;当前位置定位在0,0;调色板,背景色和绘图色都被复位;填充颜色,填 充图样,文本文字和排齐方式都返回到它位的缺省值.
    用法: 此函数调用方式为void graphdefaults(void);
    说明: 该函数无参数调用.
    这个函数相应的头文件为graphics.h
    返回值: 无
    例: 将图形系统恢复为其缺省值:
    graphdefaults();
    28. setgraphmode() 设置图形模式函数
    功能: 函数setgraphmode()用当前图形驱动程序有效的图形模式调用,一旦被调用,setgraphmode()选择一个新的图形模式.注意,图形显示模式必须事先由initgraph()初始化.
    用法: 该函数调用方式为void setgraphmode(int mode);
    说明: 参数mode调用时为指定的模式值.
    此函数相应的头部文件是graphics.h
    返回值: 无
    例: 把VGA图形卡设置为VGAMED模式:
    setgraphmode(VGAMED); // 图形系统已经初始化
    29. restorecrtmode() 恢复文本显示模式函数
    功能: 函数restrecrtmode()将显示模式恢复到调用initgraph()时检测出的初始文本模式.
    用法: 这个函数调用方式为void restorecrtmode(void);
    说明: 函数restorecrtmode()和setgraphmode()函数一起使用,可以实现文本与图形显示之间的切换.
    此函数对应的头文件为graphics.h
    返回值: 无
    例: 恢复显示模式为初始文本模式:
    restorecrtmode();
    30. graphresult() 图形操作结果函数
    功能: 函数graphresult()函数返回最后一次图形操作的代码.
    用法: 此函数调用方式为int graphresult(void);
    说明: C为图形设置了代码,它们是从-15到0的整数值.其含义见表1-6.
    调用该函数时,出错状态被复位为0,所以返回值(代码)最好存于变量中,以供需要时检测,
    进行下一步图形操作.

    图形操作信息名称 代码 含 义
    grOK
    grNoInitGraph
    grNoDetected
    grFileNoFound
    grInvalidDriver
    grNoLoadMem
    grNoScanMem
    grNoFloadMem
    grFontNotFound
    grNoFontMem
    grInvalidMode
    grError
    grIOerror
    grInvalidFont
    grInvalidDeviceNum 0
    -1
    -2
    -3
    -4
    -5
    -6
    -7
    -8
    -9
    -10
    -11
    -12
    -13
    -14
    -15
    成功
    没有图形初始化
    没有检测到图形硬件
    没有找到图形驱动文件
    无效图形驱动程序
    没有足够内存装入图形驱动程序
    Scan填 充内存不足
    Flood填 充内存不足
    没有找到字体文件
    没有足够内存用于装字体文件
    无效图形模式
    一般图形错误
    输入输出错误
    无效字体文件
    无效字体号
    无效设备号
    这个函数对应的头部文件是graphics.h
    返回值: 返回最后一次图形操作结果相应的代码.
    例: 调用graphresult()函数的实例见下面grapherrormsg()函数的例子.
    31. grpaherrormsg() 图形错误信息函数
    功能: 函数grapherrormsg()返回指向出错代码相应的错误信息字符串的指针.
    用法: 此函数调用方式为char *grapherrormsg(int errcode);
    说明: 参数errcode值,即出错代码由调用函数graphresult()获得.这里所有出错代码及相应的错误信息如表1-6中所述.
    该函数相应的头文件是grpahics.h
    返回值: 返回一个指向该出错代码相应的错误信息字符串的指针.
    例: 用文字形式显示有关出错代码相应的错误信息:
    int errorcode;
    errorcode=graphresult();
    printf(%s",grapherrormsg(errcode));
    32. setgraphbufsize()设置图形缓冲区大小函数
    功能: 函数setgraphbufsize()用来设置有的图形函数(如floodfill等)所要用到的内存缓冲区大小.
    用法: 函数调用方式为unsigned setgraphbufsize(unsigned bufsize);
    说明: 这里无符号参数bufsize为所设置的缓冲区大小.
    一般不需要用到该函数,仅使用由initgraph()函数产生的内存缓冲区就够了,缓冲区大小缺省时为4KB(即4096个字节),足以用来填 充一个大约有650个顶点的多边形,但是为了节省内存,用户可以减少缓冲区的大小,或者由于需要更多的缓冲区内存,这时可用函数setgraphbufsize()来增加缓冲区大小.注意,使用setgraphbufsize()函数必须在调用initgraph()之前.
    返回值: 返回先前定义的图形缓冲区字节数.
    例: 调用此函数设置图形缓冲区为8KB字节:
    setgraphbufsize(0x2000);
    33. setactivepage() 设置可输出显示页函数
    功能: 函数setactiveage()设置用作图形输出的显示页.
    用法: 这个函数调用方式为void setactivepage(int pagenum);
    说明: 参数pagenum为选择的显示页号,如果调用成功,那么后续图形输出就写到选定的输出页上.缺省时是以0页作为当前输出页.该函数只在图形驱动程序及其显示模式支持多个显示页时才起作用.
    此函数相应的头文件为graphics.h
    返回值: 无
    例: 设置1页为输出显示页:
    setactivepage(1);
    34. setvisualpage() 设置可见显示页数
    功能: 函数setvisualpage()设置屏幕上可见的显示页.
    用法: 函数调用方式为void setvisualpage(int pagenum);
    说明: 参数pagenum为设置的显示页号.缺省时是以0页作为当前可见页.调用这个函数和调用setactivepage()一样,仅在图形驱动程序及其显示模式支持多个显示页时才有效.用户可以用系统所支持的任何显示页,在它们之间切换,当然一次只能有一个显示页在屏幕上可见,有时需要在一页上建立后备图形葨图像,它在当时不显示,一旦需要时,可以马上切换到该页,如要实现动画效果,只需切换显示页号即可.用setvisualpage()函数选 定实际显示在屏幕上的可见页,用setactivepage()函数选择当前图形输出页,从而实现图形页之间的显示切换,通常这两个函数都是缺省的,这时输出页就是可见页.若不绘制动画就不需要用到这两个函数.
    这两个函数对应的头文件是graphics.h
    返回值: 无
    例: 设置可见页为第1页:
    setvisualpage(1);
    35. closegraph()关闭图形模式函数
    功能: 函数closegraph()将系统图形模式关闭,,复位到initgraph()初始文本模式,并且释放图形驱动程序,字体和内部缓冲区所占用的系统内存.
    用法: 这个函数调用方式为void closegraph(void);
    说明: 当用户的程序既用到图形输出又用到非图形输出时,应该调用此函数.特别是程序多次调用initgraph()函数的情况,要相应地调用closegraph函数,释放调用initgraph()所占用的内存,否则内存很快就满了,程序无法运行,如果程序结束,也可以用restorecrtmode()函数代替该函数,这样任何分配的内存都将释放.
    此函数对应的头文件是graphics.h
    返回值: 无
    例: 关闭图形系统:
    closegraph();
    C语言图形编程(三,绘图函数-01)
    一,屏幕和视口设置与清除函数
    36. setviewport() 设置图形视口函数
    37. clearviewport()清除图形视口函数
    38. cleardevice() 清除屏幕函数
    39. getviewsettings() 获取图形视口设置函数
    二,调色板和颜色函数
    40. setpalette()设置调色板函数
    41. setallpalette()设置整个调色板函
    42. setbackcolor() 设置背景颜色函数
    43. setcolor() 设置颜色函数
    44. getbkcolor() 返回背景色函数
    45. getcolor() 返回当前绘图颜色
    46. getmaxcolor()返回最大颜色值函数
    47. getpalette() 获取调色板函数
    48. getpalettesize() 返回调色板大小函数
    49. getdefaultpalette() 获取缺省调色板函数
    三,屏幕位置函数
    50. getmaxx()返回最大x坐标函数
    51. getmaxy() 返回最大y坐标函数
    52. getx() 返回x坐标函数
    53. gety() 返回y坐标函数
    54. moveto()函数
    55. moverel() 相对移动函数
    ----------------------------------------------------
    Borland C++提供了一整套综合性的图形函数,上节介绍了其中有关图形显示的函数,本节介绍其中的绘图函数,下节将介绍它的图形文本函数.
    一般绘图时,首先要清除屏幕,设置图形视口,设置绘图颜色,然后在屏幕上某个位置画点或直线或曲线等.下面给出具有这些功能的函数.
    一,屏幕和视口设置与清除函数
    36. setviewport() 设置图形视口函数
    功能: 函数setviewport() 设置当前图形视口.
    用法: 函数调用方式为void setviewport(int left,int top,int right,int bottom,int clip);
    说明: 参数left,top是左上角坐标,right,bottom是右下角坐标,它们都是绝对屏幕坐标.
    传给setviewport()的第五个参数是clip,如果clip为1,则超出视口的输出图形自动被裁剪掉,即所有作图限制于当前图形视口之内,如果clip为0,则不做裁剪,即作图将无限制地扩展于视口周界之外,直到屏幕边界.若无效参数传入setviewport(),则graphresult()函数返回值-11,先前视口设置仍有效.
    setviewport()函数的对应头文件为 graphics.h
    返回值: 无
    例: 建立对角为(6,6)和(88,88)的视口,并带有裁剪功能:
    setviewport(6,6,88,88,1);
    37. clearviewport()清除图形视口函数
    功能: 函数clearviewport()清除当前图形视口,并把光标从当前位置移到原点(0,0).
    用法: 该函数调用方式为void clearviewport(void);
    说明: 此函数调用执行后,当前图形视口将不复存在.
    这个函数对应的头文件是graphics.h
    返回值: 无
    例: 清除当前图形视口,但并非整个屏幕:
    clearviewport();
    38. cleardevice() 清除屏幕函数
    功能: 函数cleardevice() 清除整个屏幕,并且将当前位置移到屏幕原点.
    用法: 此函数调用方式为void cleardevice(void);
    说明: 该函数类似于文本模式下的函数clrscr(),但clrscr()函数不能在图形方式下工作;同样cleardevice()函数不能在文本模式下工作.
    这个函数相应的头文件为graphics.h
    返回值: 无
    例: 清除当前整个屏幕:
    cleardevice();
    39. getviewsettings() 获取图形视口设置函数
    功能: 函数getviewsettings()返回当前图形视口坐标和裁剪标志,坐标是绝对屏幕坐标,裁剪标志 1或 0.
    用法: 此函数调用方式为void getviewsettings(struct viewporttype *info);
    说明: 该函数执行后,把有关当前视口的信息装入info指向的viewporttype型结构中.
    viewporttype结构定义如下:
    struct viewporttype {
    int left,top,right,bottom;
    int clipflag;
    }
    这里left,top中存放视口左上角坐标,right,bottom中存放视口右下角坐标,clipflag中存放裁剪标志,若clipflag为1 ,执行裁剪以防止超出视口边界,如果clipflag为0,则不对超出边界输出作裁剪.
    getviewsettings()函数对应的头文件是graphics.h
    返回值: 无
    例: 显示当前视口角点坐标:
    struct viewporttype info;
    getviewsettings(&info);
    printf("left:%d top:%d\n",info.left,info.top);
    printf("right:%d bottom:%d\n",info.right,info.bottom);
    二,调色板和颜色函数
    进行图形显示或绘图,除了要知道用什么显示卡以及相应的图形驱动程序外,还必须了解它们支持什么样的调色板颜色.
    40. setpalette()设置调色板函数
    功能: 函数setpalette()可对调色板上的颜色的色彩值重新设定.
    用法: setpalette()函数调用方式为void setpalette(int value,int color);
    说明: 参数value为色彩值,color为色彩值相应的颜色名.当需要将一颜色指定为一色彩值地,即可调用此函数来设置.
    表1-7 预先定义的调色板与色彩
    -----------------------------------------------------------------
    调色板 色彩0 色彩1 色彩2 色彩3
    -----------------------------------------------------------------
    C0 黑色 淡绿 红浅 黄色
    C1 黑色 淡青 粉红 白色
    C2 黑色 绿色 红色 棕色
    C3 黑色 青色 品粉红 淡灰色
    -----------------------------------------------------------------
    这个函数相对应的头文件为graphics.h
    返回值: 无
    展开全文
  • Sigmoid函数又称logistic函数,在逻辑回归中经常出现。 公式为: Sigmoid函数常被用作神经网络的阈值函数,将变量映射到0,1之间,该函数单调递增且以(0,0.5)对称,在两端变化速度较慢。 它是神经网络中的...

    Sigmoid函数又称logistic函数,在逻辑回归中经常出现。
    公式为:
    在这里插入图片描述
    Sigmoid函数常被用作神经网络的阈值函数,将变量映射到0,1之间,该函数单调递增且以(0,0.5)对称,在两端变化速度较慢。
    在这里插入图片描述
    它是神经网络中的激活函数,其作用就是引入非线性
    优点:
    (1)sigmoid函数单调连续,输出范围有限,所以数据在传递的过程中不容易发散
    (2)由于输出范围为(0, 1),所以可以在二分类的模型做为输出层,输出表示概率。
    (3)求导容易,其导数可由自身表示:f’(x)=f(x)(1-f(x))
    缺点:
    (1)易造成梯度消失的问题。sigmoid函数和其导数Deriv.Sigmoid的图形如下,导数的值始终小于1且一直在0周围变化,在深层的神经网络中极易造成梯度消失的问题。
    在这里插入图片描述
    (2)不是以0为对称轴(这点在tahn函数有所改善)

    展开全文
  • c++ 图形函数

    千次阅读 2009-08-04 11:26:00
    一、屏幕操作函数 1. clrscr()清除字符窗口函数 2. window()字符窗口函数 3. gotoxy()光标定位函数 4. clreol() 清除光标行尾字符函数 5. insline() 插入空行函数 6. delline() 删除一行函数 7. gettext() 拷...

     一、屏幕操作函数
           1. clrscr()清除字符窗口函数
           2. window()字符窗口函数
           3. gotoxy()光标定位函数
           4. clreol() 清除光标行尾字符函数
           5. insline() 插入空行函数
           6. delline() 删除一行函数
           7. gettext() 拷进文字函数
           8. puttext() 拷出文字函数
           9. movetext() 移动文字函数
       二、字符属性函数
          10. textmode() 文本模式函数  
          11. highvideo()高亮度函数 
          12. lowvideo() 低亮度函数
          13. normvideo(void);
          14. textcolor() 文本颜色函数
          15. textattr() 文本属性函数
          16.textbackground() 文本背景函数
      三、 屏显状态函数
          17. wherex() 光标处x坐标函数
          18. wherey() 光标处y坐标函数
          19. gettextinfo() 获取文本窗口信息函数
      
      
      
      
          在Borland C++里面提供了字符屏幕和图形函数。字符屏幕的核心是窗口(Window),它是屏幕的活动部分,字符输出或显示在活动窗口中进行。窗口在缺省时,就是整个屏幕。窗口可以根据需要指定其大小。同样,对图形函数的操作,也提供了(Viewport)。也就是说图形函数的操作都是在视口上进行。图形视口与字符窗口具有相同的特性,用户可以在屏幕上定义大小不同的视口,若不定义视口大小,它就是整个屏幕。
          窗口是在字符屏幕下的概念,只有字符才能在窗口中显示出来,这时用户可以访问的最小单位为一个字符。视口是在图形屏幕状态下的概念,文本与图形都可以在视口上显示,用户可访问的最小单位是一个像素(像素这一术语最初用来指显示器上最小的、单独的发光点单元。然而现在,其含义拓宽为指图形显示器上的最小可访问点)。
          字符和图外形态下,屏幕上的位置都是由它们的行与列所决定的。有一点须指出:字符状态左上角坐标为(1,1),但图形左上角坐标为(0,0)。
          了解字符屏幕和图形函数与窗口和视口的关系是很重要的。例如,字符屏幕 光标位置函数gotoxy()将光标移到窗口的x,y位置上,这未必是相对于整个屏幕。下面介绍常用的几类字符屏幕函数的功能用途、操作方法及其例行程序。
      
      一、屏幕操作函数
          编写程序绘图经常要用到对字符屏幕进行操作。例如,在往屏幕上写字符之前,首先要将屏幕清除干净。又如,有时需要在屏幕上多处写上肉中刺样的字符内容,这时最好用屏幕拷贝来高效率地完成这一任务。对这些操作,Borland C++提供了一系列字符屏幕操作函数来实现。
      
      1. clrscr()清除字符窗口函数
      功能:函数clrscr()清除整个当前字符窗口,并且把光标定位于左上角(1,1)处。
      用法:此函数调用方式为 void clrscr(void);
      说明:括号中void 表示无参数。
            该函数相应的头文件为conio.h
      返回值:无
      例:使用这个函数的例子见4.clreol()函数的实例中。
      
      2. window()字符窗口函数
      功能: 函数window()用于在指定位置建立一个字符窗口。
      用法: 此函数调用方式为 void window(int left,int top,int right,int bottom);
      说明: 函数中参数left,top为窗口左上角坐标;right,bottom为其右下角坐标。
             若有一个坐标是无效的,则window()函数不起作用。一旦该函数调用成功,那么所有定位坐标都是相对于窗口的,而不是相对于整个屏幕。但是建立窗口所用的坐标总是相对整个屏幕的绝对坐标,而不是相对当前窗口的相对坐标。这样用户就可以根据各种需要建立多个互不嵌套的窗口。
             此函数的头文件为conio.h。
      返回值:无
      例: 调用这个函数的实现例见3.gotoxy()函数的例子中。
      
      3. gotoxy()光标定位函数
      功能: 函数gotoxy()将字屏幕上的光标移到当前窗口指定的位置上。
      用法: 这个函数调用方式为void gotoxy(int x,int y);
      说明: 括号里x,y是, 光标定位的坐标,假如其中一个坐标值无效(如坐标超界),那么光标不会移动。
             此函数在字符状态(有时称为文本状态)下经常用到 ,其相应的头文件为conio.h
      返回值:无
      例: 下面程序建立两个窗口,然后在窗口里显示字符,字符的位置是调用该函数确定的。
      #include"conio.h>
      void border(int startx,int starty,int endx,int endy)
      {
         register int i;
         gotoxy(1,1);
         for(i=0;i<=endx-startx;i++)
            putch('-');
         gotoxy(1,endy-starty);
         for(i=0;i<=endx-startx;i++)
            putch('-');
         for(i=2;i<=endy-starty;i++){
            gotoxy(1,i);
            putch('1');
            gotoxy(endx-startx+1,i);
            putch('1');
         }
      }
      
      main()
      {
         void border(int,int,int,int);
         clrscr();
         window(6,8,38,12);
         border(6,8,38,12);
         gotoxy(2,2);
         printf("window 1");
         window(8,16,40,24);
         border(8,16,40,24);
         gotoxy(3,2);
         printf("window 2");
         getch();
      }
      
      4. clreol() 清除光标行尾字符函数
      功能: 函数clreol()在当前字符窗口中清除从光标位置到行尾的所有字符,而光标位置保持不变。
      用法: 它的调用方式为void clreol(void);
      说明: 此函数的相应头文件为 conio.h
      返回值:无
      例: 程序中使用了函数clreol()和clrscr()
      #include "conio.h>
      void main()
      {
         register int i;
         gotoxy(6,8);
         printf("This is a test of the clreol() function.");
         getch();
         gotoxy(6,8);
         clreol();
         for(i=0;i<20;i++)
            printf("Hello ");
         getch();
         clrscr();
      }
      
      5. insline() 插入空行函数
      功能: 函数insline()插入一空行到当前光标所在行上,同时光标以下的所有行都向下顺移一行。
      用法: 此函数的调用方式为void insline(void);
      说明: 该函数只用于文本方式,并且在当了符窗口才有效。
             这个函数的对应头文件是 conio.h
      返回值:无
      例: 程序给出了insline()函数的用法。
      #include "conio.h"
      void main()
      {
         registser int i;
         clrscr();
         for(i=1;i<24;i++)
         {
            gotoxy(1,i);
            printf("This is line %d ",i);
         }
         getch();
         gotoxy(1,10);
         insline();
         getch();
      }
      
      6. delline() 删除一行函数
      功能: 函数delline()删除当前窗口内光标所在行,同时把该行下面 所有行都上移一行。
      用法: 此函数调用方式为 void delline(void);
      说明: 注重,假如当前窗口小于整个屏幕,那么该函数只影响到窗口内的字符。
             这个函数相应的头部文件是conio.h
      返回值: 无
      例:先在屏幕上显示16行文字,然后删除第4行
      #include "conio.h"
      void main()
      {
         register int i;
         clrscr();
         for(i=0;i<16;i++) printf("line %d ",i);
         getch();
         gotoxy(1,4);
         delline();
         getch();
      }
      
      7.gettext() 拷进文字函数
      功能: 函数gettext()用于文本状态下将屏幕上矩形域 

     

     

    一、确定显示卡
      二、选择显示模式   
      三、图形显示
          20. detectgraph() 显示卡检测函数
          21. initgraph() 图形初始化函数
          22. getdrivername() 获取图形驱动程序名的指针
          23. getgraphmode() 获取图形模式函数
          24. getmoderange()获取模式值范围函数
          25. getmaxmode()获取最大显示模式函数
          26. getmodename()获取显示模式名函数
          27. graphdefaults()图形设置复位缺省值函数
          28. setgraphmode() 设置图形模式函数
          29. restorecrtmode() 恢复文本显示模式函数
          30. graphresult() 图形操作结果函数
          31. grpaherrormsg() 图形错误信息函数
          32. setgraphbufsize()设置图形缓冲区大小函数
          33. setactivepage() 设置可输出显示页函数
          34. setvisualpage() 设置可见显示页数
          35. closegraph()关闭图形模式函数
          
      
      
      
      
      一、确定显示卡
         微机系统显示部分由显示器(monitor)和显示卡(adapter)两部分组成。显示器是独立于主机的一种外部设备,显示卡或称显示适配卡,也有的称图形卡,是插在主机上的一块电路板。但也有的显示卡与主机板设计在一起。显示卡包括寄存器组、存储器和控制电路三大部分。其中存储器又包括显示RAM和ROM BIOS两部分,微机对显示屏幕的所有操作都是通过显示卡来实现的。因此要进行图形显示 ,首先要确定计算机上安装的是何种显示卡。一种方法是询问计算机或终端使用者,确定将要使用的显示卡类型。这种方法很难,因为甚至专业程序员也不总是能确定他正在使用什么样的硬件。另一种方法是用软件查询硬件以识别当前的配置。假如有一些识别硬件的标准,这就很简单了。在Borland C中对现在所使用的各种显示卡提供了支持,这只要调用detectgraph()函数就可以了,该函数为程序员确定计算机上使用的显示卡类型。
      
      二、选择显示模式
         显示模式是指显示卡支持的分辨率与相应的颜色配置。每台计算机都配置了某种类型显示卡,可以为该显示卡指定显示模式。
      
      三、图形显示
          进行图形显示首先要确定显示卡,然后选择其显示模式。这些工作都可以调用图形功能函数来完成,其实就是把适合于显示卡的图形驱动程序装入内存。假如图形驱动程序未装入内存,那么图形函数就不能操作。
      
      20. detectgraph() 显示卡检测函数
      功能: 函数detectgraph()在计算机上安装有显示卡的情况下,测定其显示卡的类型。
      用法: 此函数调用方式为void detectgraph(int *driver,int *mode);
      说明: 函数把driver所指向的整型变量设置为图形驱动程序的代码,把mode所指向的整型变量设置为显示卡支持的最高有效模式(即该显示卡能支持的最高分辨率)。
         该函数相应的头文件为graphics.h
      返回值: 返回适合于该显示卡的图形驱动程序的代码(也称等价值),并存放在driver指向的变量中。若计算机系统中无图形硬件,则由driver指向的变量设置为-2。
      例: 检测计算机是否装有显示卡:
         int driver,mode;
         detectgraph(&driver,&mode);
         if(driver==-2)
         {
            printf("no graphics adapter in the computer");
            exit(1);
         }
      
      21. initgraph() 图形初始化函数
      功能: 函数initgraph()用于初始化图形系统,把适合的图形驱动程序装入内存,设置图形函数所用的显示模式。
      用法: 该函数调用方式为void initgraph(int *driver,int *mode,char *path);
      说明: 1) 函数中参数driver指向图形驱动程序(或者等价值)。
         在头部文件graphics.h中定义了图形驱动程序的宏名与其等价 ,如下:
      宏   名              等价值
      ------------------------------
      DETECT                  0
      CGA                     1
      MCGA                    2
      EGA                     3
      EGA64                   4
      EGAMONO                 5
      IBM8514                 6
      HERCMONO                7
      ATT400                  8
      VGA                     9
      PC3270                 10
      --------------------------------
      
      注:在现在的计算机中,上表中的许多显示卡已经过时,不再使用。
      
      这样就不必担心图形驱动程序的准确名字,而只要用其等价值即可,若使用detect(即等价值0)时,initgraph()函数自动检测当前计算机中装有的显示卡类型,并且选用最大分辨率的显示模式。
      2)参数mode指向显示模式或用等价值(风表1-5),mode所指的值必须是有效模式之一。
      3)参数path指向图形驱动程序所在的路径,例如path="C:TCBG1".若没有指定路径,就在当前目录下寻找。
         一般图形驱动程序包含在.BGI文件中,这些文件是系统可以得到的。这个函数对应的头文件是graphics.h。
      返回值: 无
      例: 调用initgraph()自动检测硬件图形系统,并选用最大分辨率显示模式。
         init drver,mode;
         driver=DETECT;
         mode=0;
         initgraph(&driver,&mode,"");
      
      22. getdrivername() 获取图形驱动程序名的指针
      功能: 函数getdrivername()返回指向当前图形驱动程序名的指针。
      用法: 此函数调用方式为char *getdrivername(void);
      说明: 本函数可以用来检测显示卡,但只能在initgraph()设置图形驱动程序和显示模式之后调用。
         该函数相应的头文件为graphics.h
      返回值: 返回一指针,指向含有当前图形驱动程序名的字符串。
      例: 显示当前图形驱动程序名:
         #include<graphics.h>
         #include<stdio.h>
         void main()
         {
            int graphdriver=DETECT,graphmode;
            char *s;
            initgraph(&graphdriver,&graphmode,"");
            s=getdrivername();
            outtext("Using driver:");
            outtext(s);
            getch();
            closegraph();
         }
      
      23. getgraphmode() 获取图形模式函数
      功能: 函数getgrapgmode()返回当前图形模式。
      用法: 该函数调用方式为int getgraphmode(void);
      说明: getgraphmode()函数无参数调用。
            这个函数对应的头文件是graphics.h
      返回值: 返回initgraph()或setgraphmode()所设置的当前图形模式值。
      例: 显示当前图形模式的代码:
         printf("graphics mode is %d",getgraphmode());
      
      24. getmoderange()获取模式值范围函数
      功能: 函数getmoderange()返回指定的图形驱动程序能够支持的最低和最高模式值。
      用法: 函数调用方式为 void 

     

     

     

    一、屏幕和视口设置与清除函数
          36. setviewport() 设置图形视口函数
          37. clearviewport()清除图形视口函数
          38. cleardevice() 清除屏幕函数
          39. getviewsettings() 获取图形视口设置函数
      二、调色板和颜色函数
          40. setpalette()设置调色板函数
          41. setallpalette()设置整个调色板函
          42. setbackcolor() 设置背景颜色函数
          43. setcolor() 设置颜色函数
          44. getbkcolor() 返回背景色函数
          45. getcolor() 返回当前绘图颜色
          46. getmaxcolor()返回最大颜色值函数
          47. getpalette() 获取调色板函数
          48. getpalettesize() 返回调色板大小函数
          49. getdefaultpalette() 获取缺省调色板函数
      三、屏幕位置函数
          50. getmaxx()返回最大x坐标函数
          51. getmaxy() 返回最大y坐标函数
          52. getx() 返回x坐标函数
          53. gety() 返回y坐标函数
          54. moveto()函数
          55. moverel() 相对移动函数
      ----------------------------------------------------
      
      
         Borland C++提供了一整套综合性的图形函数,上节介绍了其中有关图形显示的函数,本节介绍其中的绘图函数,下节将介绍它的图形文本函数。
         一般绘图时,首先要清除屏幕,设置图形视口,设置绘图颜色,然后在屏幕上某个位置画点或直线或曲线等。下面给出具有这些功能的函数。
      
      一、屏幕和视口设置与清除函数
      
      36. setviewport() 设置图形视口函数
      功能: 函数setviewport() 设置当前图形视口。
      用法: 函数调用方式为void setviewport(int left,int top,int right,int bottom,int clip);
      说明: 参数left,top是左上角坐标,right,bottom是右下角坐标,它们都是绝对屏幕坐标。
            传给setviewport()的第五个参数是clip,假如clip为1,则超出视口的输出图形自动被裁剪掉,即所有作图限制于当前图形视口之内,假如clip为0,则不做裁剪,即作图将无限制地扩展于视口周界之外,直到屏幕边界。若无效参数传入setviewport(),则graphresult()函数返回值-11,先前视口设置仍有效。
            setviewport()函数的对应头文件为 graphics.h
      返回值: 无
      例: 建立对角为(6,6)和(88,88)的视口,并带有裁剪功能:
         setviewport(6,6,88,88,1);
      
      37. clearviewport()清除图形视口函数
      功能: 函数clearviewport()清除当前图形视口,并把光标从当前位置移到原点(0,0)。
      用法: 该函数调用方式为void clearviewport(void);
      说明: 此函数调用执行后,当前图形视口将不复存在。
            这个函数对应的头文件是graphics.h
      返回值: 无
      例: 清除当前图形视口,但并非整个屏幕:
         clearviewport();
      
      38. cleardevice() 清除屏幕函数
      功能: 函数cleardevice() 清除整个屏幕,并且将当前位置移到屏幕原点。
      用法: 此函数调用方式为void cleardevice(void);
      说明: 该函数类似于文本模式下的函数clrscr(),但clrscr()函数不能在图形方式下工作;同样cleardevice()函数不能在文本模式下工作。
            这个函数相应的头文件为graphics.h
      返回值: 无
      例: 清除当前整个屏幕:
         cleardevice();
      
      39. getviewsettings() 获取图形视口设置函数
      功能: 函数getviewsettings()返回当前图形视口坐标和裁剪标志,坐标是绝对屏幕坐标,裁剪标志 1或 0。
      用法: 此函数调用方式为void getviewsettings(strUCt viewporttype *info);
      说明: 该函数执行后,把有关当前视口的信息装入info指向的viewporttype型结构中。
            viewporttype结构定义如下:
            struct viewporttype {
               int left,top,right,bottom;
               int clipflag;
            }
         这里left,top中存放视口左上角坐标,right,bottom中存放视口右下角坐标,clipflag中存放裁剪标志,若clipflag为1 ,执行裁剪以防止超出视口边界,假如clipflag为0,则不对超出边界输出作裁剪。
            getviewsettings()函数对应的头文件是graphics.h
      返回值: 无
      例: 显示当前视口角点坐标:
         struct viewporttype info;
         getviewsettings(&info);
         printf("left:%d top:%d ",info.left,info.top);
         printf("right:%d bottom:%d ",info.right,info.bottom);
      
      
      二、调色板和颜色函数
      进行图形显示或绘图,除了要知道用什么显示卡以及相应的图形驱动程序外,还必须了解它们支持什么样的调色板颜色。
      
      40. setpalette()设置调色板函数
      功能: 函数setpalette()可对调色板上的颜色的色彩值重新设定。
      用法: setpalette()函数调用方式为void setpalette(int value,int color);
      说明: 参数value为色彩值,color为色彩值相应的颜色名。当需要将一颜色指定为一色彩值地,即可调用此函数来设置。
      
      表1-7  预先定义的调色板与色彩
      -----------------------------------------------------------------
      调色板         色彩0         色彩1         色彩2         色彩3
      -----------------------------------------------------------------
        C0            黑色         淡绿           红浅          黄色
        C1            黑色         淡青           粉红          白色
        C2            黑色         绿色           红色          棕色
        C3            黑色         青色          品粉红        淡灰色
      -----------------------------------------------------------------
      这个函数相对应的头文件为graphics.h
      返回值: 无
      
      41. setallpalette()设置整个调色板函数
      功能: 函数setallpalette()对某个调色板上的所有颜色重新设定彩色值。
      用法: 函数调用方式为void setallpalette(struct palettetype *p);
      说明: 在低分辨率图形显示模式下,该函数无效。若函数调用成功,则把p指向的palettetype结构中的色彩值设置为当前调色板所有颜色的新色彩值。
         palettetype结构定义如下:
         struct palettetype {
            unsigned char size;
            signed char color[16];
         };
      这里必须把size设置为调色板颜色的数目,并把每个色彩值都装入color数组相应元素中,然后才可用于调用函数。
            此函数对应的头文件是graphics.h
      返回值: 无
      例:把16色的EGA/VGA显示卡调色板改为其前16种颜色:
         struct palettetype;
         int i;

    四、图形和图像函数
      (一) 像素函数
          56. putpiel() 画像素点函数
          57. getpixel()返回像素色函数
      (二) 直线和线型函数
          58. line() 画线函数
          59. lineto() 画线函数
          60. linerel() 相对画线函数
          61. setlinestyle() 设置线型函数
          62. getlinesettings() 获取线型设置函数
          63. setwritemode() 设置画线模式函数
      (三)、多边形函数
          64. rectangle() 画矩形函数
          65. bar() 画条函数
          66. bar3d() 画条块函数
          67. drawpoly() 画多边形函数
      (四)、 圆、弧和曲线函数
          68. getASPectratio()获取纵横比函数
          69. circle()画圆函数
          70. arc() 画圆弧函数
          71. ellipse()画椭圆弧函数
          72. fillellipse() 画椭圆区函数
          73. pieslice() 画扇区函数
          74. sector() 画椭圆扇区函数
          75. getarccoords()获取圆弧坐标函数
      (五)、 填充函数
          76. setfillstyle() 设置填充图样和颜色函数
          77. setfillpattern() 设置用户图样函数
          78. floodfill() 填充闭域函数
          79. fillpoly() 填充多边形函数
          80. getfillsettings() 获取填充设置函数
          81. getfillpattern() 获取用户图样设置函数
      (六)、图像函数
          82. imagesize() 图像存储大小函数
          83. getimage() 保存图像函数
          84. putimage() 输出图像函数
      
      
      
      四、图形和图像函数
         对许多图形应用程序,直线和曲线是非常有用的。但对有些图形只能靠操作单个像素才能画出。当然假如没有画像素的功能,就无法操作直线和曲线的函数。而且通过大规模使用像素功能,整个图形就可以保存、写、擦除和与屏幕上的原有图形进行叠加。
      (一) 像素函数
      
      56. putpixel() 画像素点函数
      功能: 函数putpixel() 在图形模式下屏幕上画一个像素点。
      用法: 函数调用方式为void putpixel(int x,int y,int color);
      说明: 参数x,y为像素点的坐标,color是该像素点的颜色,它可以是颜色符号名,也可以是整型色彩值。
             此函数相应的头文件是graphics.h
      返回值: 无
      例: 在屏幕上(6,8)处画一个红色像素点:
         putpixel(6,8,RED);
      
      57. getpixel()返回像素色函数
      功能: 函数getpixel()返回像素点颜色值。
      用法: 该函数调用方式为int getpixel(int x,int y);
      说明: 参数x,y为像素点坐标。
             函数的返回值可以不反映实际彩色值,这取决于调色板的设置情况(参见setpalette()函数)。
             这个函数相应的头文件为graphics.h
      返回值: 返回一个像素点色彩值。
      例: 把屏幕上(8,6)点的像素颜色值赋给变量color。
         color=getpixel(8,6);
      
      (二) 直线和线型函数
         有三个画直线的函数,即line(),lineto(),linerel()。这些直线使用整型坐标,并相对于当前图形视口,但不一定受视口限制,假如视口裁剪标志clip为真,那么直线将受到视口边缘截断;假如clip为假,即使终点坐标或新的当前位置在图形视口或屏幕极限之外,直线截断到屏幕极限。
         有两种线宽及几种线型可供选择,也可以自己定义线图样。下面分别介绍直线和线型函数。
      
      58. line() 画线函数
      功能: 函数line()使用当前绘图色、线型及线宽,在给定的两点间画一直线。
      用法: 该函数调用方式为void line(int startx,int starty,int endx,int endy);
      说明: 参数startx,starty为起点坐标,endx,endy为终点坐标,函数调用前后,图外形态下屏幕光标(一般不可见)当前位置不改变。
             此函数相应的头文件为graphics.h
      返回值: 无
      例: 见函数60.linerel()中的实例。
      
      59. lineto() 画线函数
      功能: 函数lineto()使用当前绘图色、线型及线宽,从当前位置画一直线到指定位置。
      用法: 此函数调用方式为void lineto(int x,int y);
      说明: 参数x,y为指定点的坐标,函数调用后,当前位置改变到指定点(x,y)。
             该函数对应的头文件为graphics.h
      返回值: 无
      例: 见函数60.linerel()中的实例。
      
      60.linerel() 相对画线函数
      功能: 函数linerel() 使用当前绘图色、线型及线宽,从当前位置开始,按指定的水平和垂直偏移距离画一直线。
      用法: 这个函数调用方式为void linerel(int dx,int dy);
      说明: 参数dx,dy分别是水平偏移距离和垂直偏移距离。
             函数调用后,当前位置变为增加偏移距离后的位置,例如,原来的位置是(8,6),调用函数linerel(10,18)后,当前位置为(18,24)。
      返回值:无
      例: 下面的程序为画线函数调用实例:
      #include<graphics.h>
      void main()
      {
         int driver,mode;
         driver=DETECT;
         mode=0;
         initgraph(&driver,&mode,"");
         setcolor(15);
         line(66,66,88,88);
         lineto(100,100);
         linerel(36,64);
         getch();
         restorecrtmode();
      }
      
      61. setlinestyle() 设置线型函数
      功能: setlinestyle() 为画线函数设置当前线型,包括线型、线图样和线宽。
      用法: setlinestyle() 函数调用方式为void setlinestyle(int stly,unsigned pattern,int width);
      说明: 参数style为线型取值,也可以用相应名称表示,如表1-10中所示。
             参数pattern用于自定义线图样,它是16位(bit)字,只有当style=USERB99v_LINE(值为1)时,pattern的值才有意义,使用用户自定义线图样,与图样中“1”位对应的像素显示,因此,pattern=0xFFFF,则画实线;pattern=0x9999,则画每隔两个像素交替显示的虚线,假如要画长虚线,那么pattern的值可为0xFF00和0xF00F,当style不为USERB99v_LINE值时,虽然pattern的值不起作用,但扔须为它提供一个值,一般取为0。
          参数wigth用来设定线宽,其取值见表1-11,表中给出了两个值,即1和3,实际上,线宽取值为2也是可以接受的。
          若用非法参数调用setlinestyle()函数,那么graphresult()会返回错误代码,并且当前线型继续有效。
          Turbo C提供的线型与线宽定义在头文件graphics.h中,表1-10和1-11分别列出了参数的取值与含义。
      
      表1-10  线型
      -----------------------------------------------------
         名        称      取 值         含    义
      -----------------------------------------------------
         SOLID_LINE          0             实线
         DOTTED_LINE         1             点线
         CNTER_LINE          2        & 

     

     

     

     

     

     

    一、图形文本函数
          85. outtext() 当前位置显示字符串函数
          86. outtextxy() 在(x,y)处显示字符串函数
          87. sprintf() 格式化输出函数
      二、图形文本设置
          88. settextstyle() 设置文本型式函数
          89. settextjustify() 设置文本排齐函数
          90. setusercharsize() 设置用户字符比例函数
          91. gettextsettings() 获取文本设置函数
          92. textheight() 文本高度函数
          93. textwidth() 文本宽度函数
      
      
      
      
         假如没有文本,图形也派不太多的用场。但是图形模式一旦设置,就无法进行常规文本显示。标号和文字信息只能用图形文本显示。图形文本显示与常规文本显示不同。例如,常规字符屏幕的位置其行列坐标表示已不再适用,这时单个字符可显示在屏幕上的任何位置。另外图形文本显示既可以水平显示,也可以垂直显示,字母大小也可以改变,同时可以提供几种不同的字型。总之,常规文本显示简单轻易;图形文本显示复杂不易操作。所以,在C语言里提供了几个函数来简化操作,控制图形文本显示。
      
      一、图形文本函数
         在图形模式下,屏幕上显示字符串,可以用outtext(),outtextxy(),sprintf()。
      
      85. outtext() 当前位置显示字符串函数
      功能: 函数outtext() 在图形模式下用当前文本设置(字体、字符大小、文本显示方向及文本排齐方式)在当前位置显示一个字符串。
      用法: 此函数调用方式为void outtext(char *string);
      说明: 参数string指向要显示的字符串。
         调用该函数 也可以根据需要事先设置当前绘图色,选择字体、字符大小、确定文本显示方向及水平垂直两个方向的文本排齐方式。
         假如当前显示方向是水平的,那么当前光标位置CP会移动所显示字符的长度,否则CP不变;在图形模式下,光标不可见,但是即使是不可见光标,在屏幕上光标位置CP还是存在的。
         这个函数对应的头文件是graphics.h
      例: 使用outtext()函数的例子见86.outtextxy()函数的例子中。
      
      86. outtextxy() 在(x,y)处显示字符串函数
      功能:函数outtextxy() 在图形模式下屏幕坐标像素点(x,y)处显示一个字符串。
      用法: 这个函数的调用方式为void outtextxy(int x,int y,char *string);
      说明: 参数(x,y)给定要显示字符串的屏幕位置,string指向该字符串。调用此函数不影响当前光标位置,当然光标是不可见的。
         该函数也要用当前绘图色、字体、字符大小、文本显示方向和水平垂直两个方向的文本排齐方式。
         outtextxy()的对应头文件是graphics.h
      返回值: 无
      例: 下面的程序中调用了outtext()和outtextxy()两个函数:
      #include<graphics.h>
      void main()
      {
         int driver,mode;
         int i;
         driver=DETECT;
         mode=0;
         initgraph(&driver,&mode,"");
         outtext("This is an example");
         outtext("another line");
         for(i=100;i<200;i+=8)
            outtextxy(200,i,"hello");
         getch();
         restorecrtmode();
      }
      
      87. sprintf() 格式化输出函数
      功能: 函数sprintf()用来作格式化的输出。
      用法: 此函数调用方式为int sprintf(char *string,char *format,arg_list);
      说明: 函数sprintf()的用法和printf()函数一样,只是sprintf()函数给出第一个参数string(一般为字符数组),然后再调用outtextxy()函数将串里的字符显示在屏幕上。arg_list为参数表,可有不定个数。通常在绘图方式下输出数字时可调用sprintf()函数将所要输出的格式送到第一个参数,然后显示输出。
      假如没有文本,图形也派不太多的用场。但是图形模式一旦设置,就无法进行常规文本显示。标号和文官信息只能用图形文本显示。图形文本显示与常规文本显示不同。例如,常规字符屏幕的位置其行列坐标表示已不再适用,这时单个字符可显示在屏幕上的任何位置。另外图形文本显示既可以水平显示,也可以垂直显示,字母大小也可以改变,同时可以提 供几种不同的字型。总之,常规文本显示简单轻易;图形文本显示复杂不易操作。所以,在C语言里提 供了几个函数来简化操作,控制图形文本显示。
      
      
      二、图形文本设置
         常规文本模式显示相当于在纸上打字,而图形文本模式显示更接近于排版印刷。这种增强性能的要害是改变字体及字符大小。选择不同的水平位置文本排齐,甚至可以在垂直方向而不是水平方向显示文本。这些都要调用文本设置函数来实现。
      
      88. settextstyle() 设置文本型式函数
      功能: 函数settextstyle() 设置图形文本当前字体、文本显示方向(水平显示或垂直显示)以及字符大小。
      用法: 此函数调用方式为void settextstyle(int font,int direction,int charsize);
      说明: 函数括号中,font为文本字体参数,direction为文本显示方向,charsize为字符大小参数。头部文件graphics中分别对它们进行了定义。表1-14所列为标准字体。
      
      表1-14 图形文本标准字体
      --------------------------------------------------------------------
            字体符号名            等价值         含   义
      --------------------------------------------------------------------
         DEFAULT_FONT               0         8*8点阵字型(缺省字体)
         TRIPLEx_FONT                1         笔划式三倍字型(三倍字体)
         SMALL_FONT                  2         笔划式小字型(小字体)
         SANS_SERIF_FONT             3         笔划式字(Sanserif字体)
         GOTHIC_FONT                 4         笔划黑体字型(哥特体)
      --------------------------------------------------------------------
      
         在设置字体之前,被选字体的.CHR文件必须装在initgraph()中指定的driverpath(驱动程序路径)目录或子目录里。
      缺省时图形文本显示方向为水平方向,但可以设置图形文本显示方向为垂直方向(逆时针转90度)。表1-15给出了这两个图形文本显示方向。
      
      表 1-15 图形文本显示方向
      ------------------------------------------------------------
         显示方向符号名       等价值         说         明
      ------------------------------------------------------------
         HORIZ_DIR               0        从左到右显示(水平方向)
         VERT_DIR                1        从底向上显示(垂直方向)
      ------------------------------------------------------------
      
      在垂直显示时,文本字符串从底部向上显示,目前还没有现成的规定从上到下或从左到右的显示,但若需要也可设计。
      对点阵字体,字符大小可以在0到10之间选择。对于笔划字体,charsize(字符大小参数)=0表示以缺省比例显示即4倍或由函数setusercharsize()设置的用户自定字符的比例放大显示。最大有效的charsize值为0。
         假如有错误参数值传给函数settextstyle(),graphresult()函数将给出值-11(表示一般图形错误),当前的文本型式保持不变。
         settextstyle()函数相应的头文件为graphics.h
      返回值:无
      例: 下面的程序中使用了settextstyle()函数,显示不同的文本字体和大小:
      #include<graphics.h>
      #include<conio.h>
      void main()
      {
         int drive

    展开全文
  • C语言图形编程中的绘图函数~

    千次阅读 多人点赞 2017-02-01 16:19:44
    setviewport() 设置图形视口函数  37. clearviewport()清除图形视口函数  38. cleardevice() 清除屏幕函数  39. getviewsettings() 获取图形视口设置函数 二、调色板和颜色函数  40. setpalette()设置调色板...
    一、屏幕和视口设置与清除函数
        36. setviewport() 设置图形视口函数
        37. clearviewport()清除图形视口函数
        38. cleardevice() 清除屏幕函数
        39. getviewsettings() 获取图形视口设置函数
    二、调色板和颜色函数
        40. setpalette()设置调色板函数
        41. setallpalette()设置整个调色板函
        42. setbackcolor() 设置背景颜色函数
        43. setcolor() 设置颜色函数
        44. getbkcolor() 返回背景色函数
        45. getcolor() 返回当前绘图颜色
        46. getmaxcolor()返回最大颜色值函数
        47. getpalette() 获取调色板函数
        48. getpalettesize() 返回调色板大小函数
        49. getdefaultpalette() 获取缺省调色板函数
    三、屏幕位置函数
        50. getmaxx()返回最大x坐标函数
        51. getmaxy() 返回最大y坐标函数
        52. getx() 返回x坐标函数
        53. gety() 返回y坐标函数
        54. moveto()函数
        55. moverel() 相对移动函数
    ----------------------------------------------------




       Borland C++提供了一整套综合性的图形函数,上节介绍了其中有关图形显示的函数,本节介绍其中的绘图函数,下节将介绍它的图形文本函数。
       一般绘图时,首先要清除屏幕,设置图形视口,设置绘图颜色,然后在屏幕上某个位置画点或直线或曲线等。下面给出具有这些功能的函数。


    一、屏幕和视口设置与清除函数


    36. setviewport() 设置图形视口函数
    功能: 函数setviewport() 设置当前图形视口。
    用法: 函数调用方式为void setviewport(int left,int top,int right,int bottom,int clip);
    说明: 参数left,top是左上角坐标,right,bottom是右下角坐标,它们都是绝对屏幕坐标。
          传给setviewport()的第五个参数是clip,如果clip为1,则超出视口的输出图形自动被裁剪掉,即所有作图限制于当前图形视口之内,如果clip为0,则不做裁剪,即作图将无限制地扩展于视口周界之外,直到屏幕边界。若无效参数传入setviewport(),则graphresult()函数返回值-11,先前视口设置仍有效。
          setviewport()函数的对应头文件为 graphics.h
    返回值: 无
    例: 建立对角为(6,6)和(88,88)的视口,并带有裁剪功能:
       setviewport(6,6,88,88,1);


    37. clearviewport()清除图形视口函数
    功能: 函数clearviewport()清除当前图形视口,并把光标从当前位置移到原点(0,0)。
    用法: 该函数调用方式为void clearviewport(void);
    说明: 此函数调用执行后,当前图形视口将不复存在。
          这个函数对应的头文件是graphics.h
    返回值: 无
    例: 清除当前图形视口,但并非整个屏幕:
       clearviewport();


    38. cleardevice() 清除屏幕函数
    功能: 函数cleardevice() 清除整个屏幕,并且将当前位置移到屏幕原点。
    用法: 此函数调用方式为void cleardevice(void);
    说明: 该函数类似于文本模式下的函数clrscr(),但clrscr()函数不能在图形方式下工作;同样cleardevice()函数不能在文本模式下工作。
          这个函数相应的头文件为graphics.h
    返回值: 无
    例: 清除当前整个屏幕:
       cleardevice();


    39. getviewsettings() 获取图形视口设置函数
    功能: 函数getviewsettings()返回当前图形视口坐标和裁剪标志,坐标是绝对屏幕坐标,裁剪标志 1或 0。
    用法: 此函数调用方式为void getviewsettings(struct viewporttype *info);
    说明: 该函数执行后,把有关当前视口的信息装入info指向的viewporttype型结构中。
          viewporttype结构定义如下:
          struct viewporttype {
             int left,top,right,bottom;
             int clipflag;
          }
       这里left,top中存放视口左上角坐标,right,bottom中存放视口右下角坐标,clipflag中存放裁剪标志,若clipflag为1 ,执行裁剪以防止超出视口边界,如果clipflag为0,则不对超出边界输出作裁剪。
          getviewsettings()函数对应的头文件是graphics.h
    返回值: 无
    例: 显示当前视口角点坐标:
       struct viewporttype info;
       getviewsettings(&info);
       printf("left:%d top:%d\n",info.left,info.top);
       printf("right:%d bottom:%d\n",info.right,info.bottom);




    二、调色板和颜色函数
    进行图形显示或绘图,除了要知道用什么显示卡以及相应的图形驱动程序外,还必须了解它们支持什么样的调色板颜色。


    40. setpalette()设置调色板函数
    功能: 函数setpalette()可对调色板上的颜色的色彩值重新设定。
    用法: setpalette()函数调用方式为void setpalette(int value,int color);
    说明: 参数value为色彩值,color为色彩值相应的颜色名。当需要将一颜色指定为一色彩值地,即可调用此函数来设置。


    表1-7  预先定义的调色板与色彩
    -----------------------------------------------------------------
    调色板         色彩0         色彩1         色彩2         色彩3
    -----------------------------------------------------------------
      C0            黑色         淡绿           红浅          黄色
      C1            黑色         淡青           粉红          白色
      C2            黑色         绿色           红色          棕色
      C3            黑色         青色          品粉红        淡灰色
    -----------------------------------------------------------------
    这个函数相对应的头文件为graphics.h
    返回值: 无


    41. setallpalette()设置整个调色板函数
    功能: 函数setallpalette()对某个调色板上的所有颜色重新设定彩色值。
    用法: 函数调用方式为void setallpalette(struct palettetype *p);
    说明: 在低分辨率图形显示模式下,该函数无效。若函数调用成功,则把p指向的palettetype结构中的色彩值设置为当前调色板所有颜色的新色彩值。
       palettetype结构定义如下:
       struct palettetype {
          unsigned char size;
          signed char color[16];
       };
    这里必须把size设置为调色板颜色的数目,并把每个色彩值都装入color数组相应元素中,然后才可用于调用函数。
          此函数对应的头文件是graphics.h
    返回值: 无
    例:把16色的EGA/VGA显示卡调色板改为其前16种颜色:
       struct palettetype;
       int i;
       for(i=0;i<16;i++) p.color[i]=i;
       p.size=16;
       setallpalette(&p);


    42. setbackcolor() 设置背景颜色函数
    功能: 函数setbackcolor()把当前调色板颜色的第一个值改成指定的颜色值,以设置背景颜色。
    用法: 此函数调用方式为void setbackcolor(int color);
    说明: 参数color为指定的背景色,其有效值可以是颜色符号名,也可以是色彩值。表1-8列出了背景颜色供选取。


    表1-8 背景颜色值
    -----------------------------------------------------------------
       颜色符号名         色彩值      颜色符号名         色彩值
    -----------------------------------------------------------------

       BLACK(黑色)      


    四、图形和图像函数

    (一) 像素函数

    56. putpiel() 画像素点函数

    57. getpixel()返回像素色函数

    (二) 直线和线型函数

    58. line() 画线函数

    59. lineto() 画线函数

    60. linerel() 相对画线函数

    61. setlinestyle() 设置线型函数

    62. getlinesettings() 获取线型设置函数

    63. setwritemode() 设置画线模式函数

    (三)、多边形函数

    64. rectangle() 画矩形函数

    65. bar() 画条函数

    66. bar3d() 画条块函数

    67. drawpoly() 画多边形函数

    (四)、 圆、弧和曲线函数

    68. getaspectratio()获取纵横比函数

    69. circle()画圆函数

    70. arc() 画圆弧函数

    71. ellipse()画椭圆弧函数

    72. fillellipse() 画椭圆区函数

    73. pieslice() 画扇区函数

    74. sector() 画椭圆扇区函数

    75. getarccoords()获取圆弧坐标函数

    (五)、 填充函数

    76. setfillstyle() 设置填充图样和颜色函数

    77. setfillpattern() 设置用户图样函数

    78. floodfill() 填充闭域函数

    79. fillpoly() 填充多边形函数

    80. getfillsettings() 获取填充设置函数

    81. getfillpattern() 获取用户图样设置函数

    (六)、图像函数

    82. imagesize() 图像存储大小函数

    83. getimage() 保存图像函数

    84. putimage() 输出图像函数

    四、图形和图像函数

    对许多图形应用程序,直线和曲线是非常有用的。但对有些图形只能靠操作单个像素才能画出。当然如果没有画像素的功能,就无法操作直线和曲线的函数。而且通过大规模使用像素功能,整个图形就可以保存、写、擦除和与屏幕上的原有图形进行叠加。

    (一) 像素函数

    56. putpixel() 画像素点函数

    功能: 函数putpixel() 在图形模式下屏幕上画一个像素点。

    用法: 函数调用方式为void putpixel(int x,int y,int color);

    说明: 参数x,y为像素点的坐标,color是该像素点的颜色,它可以是颜色符号名,也可以是整型色彩值。

    此函数相应的头文件是graphics.h

    返回值: 无

    例: 在屏幕上(6,8)处画一个红色像素点:

    putpixel(6,8,RED);

    57. getpixel()返回像素色函数

    功能: 函数getpixel()返回像素点颜色值。

    用法: 该函数调用方式为int getpixel(int x,int y);

    说明: 参数x,y为像素点坐标。

    函数的返回值可以不反映实际彩色值,这取决于调色板的设置情况(参见setpalette()函数)。

    这个函数相应的头文件为graphics.h

    返回值: 返回一个像素点色彩值。

    例: 把屏幕上(8,6)点的像素颜色值赋给变量color。

    color=getpixel(8,6);

    (二) 直线和线型函数

    有三个画直线的函数,即line(),lineto(),linerel()。这些直线使用整型坐标,并相对于当前图形视口,但不一定受视口限制,如果视口裁剪标志clip为真,那么直线将受

    到视口边缘截断;如果clip为假,即使终点坐标或新的当前位置在图形视口或屏幕极限之外,直线截断到屏幕极限。

    有两种线宽及几种线型可供选择,也可以自己定义线图样。下面分别介绍直线和线型函数。

    58. line() 画线函数

    功能: 函数line()使用当前绘图色、线型及线宽,在给定的两点间画一直线。

    用法: 该函数调用方式为void line(int startx,int starty,int endx,int endy);

    说明: 参数startx,starty为起点坐标,endx,endy为终点坐标,函数调用前后,图形状态下屏幕光标(一般不可见)当前位置不改变。

    此函数相应的头文件为graphics.h

    返回值: 无

    例: 见函数60.linerel()中的实例。

    59. lineto() 画线函数

    功能: 函数lineto()使用当前绘图色、线型及线宽,从当前位置画一直线到指定位置。

    用法: 此函数调用方式为void lineto(int x,int y);

    说明: 参数x,y为指定点的坐标,函数调用后,当前位置改变到指定点(x,y)。

    该函数对应的头文件为graphics.h

    返回值: 无

    例: 见函数60.linerel()中的实例。

    60.linerel() 相对画线函数

    功能: 函数linerel() 使用当前绘图色、线型及线宽,从当前位置开始,按指定的水平和垂直偏移距离画一直线。

    用法: 这个函数调用方式为void linerel(int dx,int dy);

    说明: 参数dx,dy分别是水平偏移距离和垂直偏移距离。

    函数调用后,当前位置变为增加偏移距离后的位置,例如,原来的位置是(8,6),调用函数linerel(10,18)后,当前位置为(18,24)。

    返回值:无

    例: 下面的程序为画线函数调用实例:

    #include<graphics.h>

    void main()

    {

    int driver,mode;

    driver=DETECT;

    mode=0;

    initgraph(&driver,&mode,"");

    setcolor(15);

    line(66,66,88,88);

    lineto(100,100);

    linerel(36,64);

    getch();

    restorecrtmode();

    }

    61. setlinestyle() 设置线型函数

    功能: setlinestyle() 为画线函数设置当前线型,包括线型、线图样和线宽。

    用法: setlinestyle() 函数调用方式为void setlinestyle(int stly,unsigned pattern,int width);

    说明: 参数style为线型取值,也可以用相应名称表示,如表1-10中所示。

    参数pattern用于自定义线图样,它是16位(bit)字,只有当style=USERBIT_LINE(值为1)时,pattern的值才有意义,使用用户自定义线图样,与图样中“1”位对应的像素显示,因此,pattern=0xFFFF,则画实线;pattern=0x9999,则画每隔两个像素交替显示的虚线,如果要画长虚线,那么pattern的值可为0xFF00和0xF00F,当style不为USERBIT_LINE值时,虽然pattern的值不起作用,但扔须为它提供一个值,一般取为0。

    参数wigth用来设定线宽,其取值见表1-11,表中给出了两个值,即1和3,实际上,线宽取值为2也是可以接受的。

    用非法参数调用setlinestyle()函数,那么graphresult()会返回错误代码,并且当前线型继续有效。

    Turbo C提供的线型与线宽定义在头文件graphics.h中,表1-10和1-11分别列出了参数的取值与含义。

    表1-10 线型

    -----------------------------------------------------

    名 称 取 值 含 义

    -----------------------------------------------------

    SOLID_LINE 0 实线

    DOTTED_LINE 1 点线

    CNTER_LINE 2 中心线

    DASHED_LINE 3 虚线

    USERBIT_LINE 4 用户自定义线型

    -----------------------------------------------------

    表1-11 线宽

    -----------------------------------------------------------

    名 称 取 值 说 明

    -----------------------------------------------------------

    NORM_WIDTH(常宽) 1 一个像素宽(缺省值)

    THICK_WIDTH(加宽) 3 三个像素宽

    -----------------------------------------------------------


    ///


    graphics.h里的定义


    /******************************************************
     * EasyX Library for C++ (Ver:20100825)
     * http://www.easyx.cn
     *
     * graphics.h
     * 在 VC 下模拟 Borland BGI 绘图库,实现简单的绘图
     ******************************************************/


    #pragma once


    #ifndef WINVER
    #define WINVER 0x0400 // Specifies that the minimum required platform is Windows 95/NT4.
    #endif


    #ifndef _WIN32_WINNT
    #define _WIN32_WINNT 0x0400 // Specifies that the minimum required platform is Windows 95/NT4.
    #endif


    #ifndef _WIN32_WINDOWS
    #define _WIN32_WINDOWS 0x0410 // Specifies that the minimum required platform is Windows 98.
    #endif


    #if defined(_UNICODE) && (_MSC_VER > 1200)
    #pragma comment(lib,"graphicswu.lib")
    #elif !defined(_UNICODE) && (_MSC_VER > 1200)
    #pragma comment(lib,"graphicsw.lib")
    #elif defined(_UNICODE)
    #pragma comment(lib,"graphicsu.lib")
    #elif !defined(_UNICODE)
    #pragma comment(lib,"graphics.lib")
    #endif




    #include "windows.h"
    #include "tchar.h"


    #define PI 3.1415926535


    // 为了兼容 Borland C++ 3.1 而做的无意义定义
    #define DETECT 0
    #define VGA 0
    #define VGAHI 0


    // 绘图环境初始化参数
    #define SHOWCONSOLE 1 // 进入图形模式时,保留控制台的显示


    // 颜色
    #define BLACK 0
    #define BLUE 0xA80000
    #define GREEN 0x00A800
    #define CYAN 0xA8A800
    #define RED 0x0000A8
    #define MAGENTA 0xA800A8
    #define BROWN 0x0054A8
    #define LIGHTGRAY 0xA8A8A8
    #define DARKGRAY 0x545454
    #define LIGHTBLUE 0xFC5454
    #define LIGHTGREEN 0x54FC54
    #define LIGHTCYAN 0xFCFC54
    #define LIGHTRED 0x5454FC
    #define LIGHTMAGENTA 0xFC54FC
    #define YELLOW 0x54FCFC
    #define WHITE 0xFCFCFC


    // 填充模式
    #define NULL_FILL 1 // 不填充
    #define SOLID_FILL 2 // 用指定颜色完全填充
    #define BDIAGONAL_FILL 3 // /// 填充 (普通一组)
    #define CROSS_FILL 4 // +++ 填充
    #define DIAGCROSS_FILL 5 // xxx 填充
    #define DOT_FILL 6 // ... 填充
    #define FDIAGONAL_FILL 7 // \\\ 填充
    #define HORIZONTAL_FILL 8 // --- 填充
    #define VERTICAL_FILL 9 // ||| 填充
    #define BDIAGONAL2_FILL 10 // /// 填充 (密集一组)
    #define CROSS2_FILL 11 // +++ 填充
    #define DIAGCROSS2_FILL 12 // xxx 填充
    #define DOT2_FILL 13 // ... 填充
    #define FDIAGONAL2_FILL 14 // \\\ 填充
    #define HORIZONTAL2_FILL 15 // --- 填充
    #define VERTICAL2_FILL 16 // ||| 填充
    #define BDIAGONAL3_FILL 17 // /// 填充 (粗线一组)
    #define CROSS3_FILL 18 // +++ 填充
    #define DIAGCROSS3_FILL 19 // xxx 填充
    #define DOT3_FILL 20 // ... 填充
    #define FDIAGONAL3_FILL 21 // \\\ 填充
    #define HORIZONTAL3_FILL 22 // --- 填充
    #define VERTICAL3_FILL 23 // ||| 填充
    #define INTERLEAVE_FILL 24 // xxx 填充 (十分密)
    #define PATTERN_FILL 25 // 用指定图案填充






    // 绘图模式相关函数


    void initgraph(int Width, int Height, int Flag = NULL); // 初始化图形环境
    void initgraph(int* gdriver, int* gmode, char* path); // 兼容 Borland C++ 3.1 的重载,默认 640x480@24bit
    void closegraph(); // 关闭图形环境






    // 绘图环境设置


    void cleardevice(); // 清屏


    void getviewport(int *pleft, int *ptop, int *pright, int *pbottom, bool *pclip = NULL); // 获取视图信息
    void setviewport(int left, int top, int right, int bottom, bool clip = true); // 设置视图
    void clearviewport(); // 清空视图


    void getlinestyle(int *plinestyle, WORD *pupattern = NULL, int *pthickness = NULL); // 获取当前线形
    void setlinestyle(int linestyle, WORD upattern = NULL, int thickness = 1); // 设置当前线形
    void getfillstyle(COLORREF *pcolor, int *ppattern = NULL, char *pupattern = NULL); // 获取填充类型
    void setfillstyle(COLORREF color, int pattern = SOLID_FILL, const char *pupattern = NULL); // 设置填充类型


    void getaspectratio(float *pxasp, float *pyasp); // 获取当前缩放因子
    void setaspectratio(float xasp = 1, float yasp = 1); // 设置当前缩放因子


    void setwritemode(int mode); // 设置绘图位操作模式


    void graphdefaults(); // 重置所有绘图设置为默认值


    COLORREF getcolor(); // 获取当前绘图前景色
    void setcolor(COLORREF color); // 设置当前绘图前景色
    COLORREF getbkcolor(); // 获取当前绘图背景色
    void setbkcolor(COLORREF color); // 设置当前绘图背景色
    void setbkmode(int iBkMode); // 设置背景混合模式


    // 颜色模型转换函数
    COLORREF RGBtoGRAY(COLORREF rgb);
    void RGBtoHSL(COLORREF rgb, float *H, float *S, float *L);
    void RGBtoHSV(COLORREF rgb, float *H, float *S, float *V);
    COLORREF HSLtoRGB(float H, float S, float L);
    COLORREF HSVtoRGB(float H, float S, float V);




    // 绘图函数


    COLORREF getpixel(int x, int y); // 获取点的颜色
    void putpixel(int x, int y, COLORREF color); // 画点


    void moveto(int x, int y); // 移动当前点(绝对坐标)
    void moverel(int dx, int dy); // 移动当前点(相对坐标)


    void line(int x1, int y1, int x2, int y2); // 画线
    void linerel(int dx, int dy); // 画线(至相对坐标)
    void lineto(int x, int y); // 画线(至绝对坐标)


    void rectangle(int left, int top, int right, int bottom); // 画矩形


    void getarccoords(int *px, int *py, int *pxstart, int *pystart, int *pxend, int *pyend); // 获取圆弧坐标信息
    void arc(int x, int y, int stangle, int endangle, int radius); // 画圆弧
    void circle(int x, int y, int radius); // 画圆
    void pieslice(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 fillellipse(int x, int y, int xradius, int yradius); // 画填充椭圆
    void sector(int x, int y, int stangle, int endangle, int xradius, int yradius); // 画填充椭圆扇形


    void bar(int left, int top, int right, int bottom); // 画无边框填充矩形
    void bar3d(int left, int top, int right, int bottom, int depth, bool topflag); // 画有边框三维填充矩形


    void drawpoly(int numpoints, const int *polypoints); // 画多边形
    void fillpoly(int numpoints, const int *polypoints); // 画填充的多边形
    void floodfill(int x, int y, int border); // 填充区域






    // 文字相关函数


    void outtext(LPCTSTR textstring); // 在当前位置输出文字
    void outtext(TCHAR c); // 在当前位置输出字符
    void outtextxy(int x, int y, LPCTSTR textstring); // 在指定位置输出文字
    void outtextxy(int x, int y, TCHAR c); // 在当前位置输出字符
    int textwidth(LPCTSTR textstring); // 获取字符串占用的像素宽
    int textheight(LPCTSTR textstring); // 获取字符串占用的像素高


    // 设置当前字体样式(详见帮助)
    // nHeight: 字符的平均高度;
    // nWidth: 字符的平均宽度(0 表示自适应);
    // lpszFace: 字体名称;
    // nEscapement: 字符串的书写角度(单位 0.1 度);
    // nOrientation: 每个字符的书写角度(单位 0.1 度);
    // nWeight: 字符的笔画粗细(0 表示默认粗细);
    // bItalic: 是否斜体;
    // bUnderline: 是否下划线;
    // bStrikeOut: 是否删除线;
    // fbCharSet: 指定字符集;
    // fbOutPrecision: 指定文字的输出精度;
    // fbClipPrecision: 指定文字的剪辑精度;
    // fbQuality: 指定文字的输出质量;
    // fbPitchAndFamily: 指定以常规方式描述字体的字体系列。
    void setfont(int nHeight, int nWidth, LPCTSTR lpszFace);
    void setfont(int nHeight, int nWidth, LPCTSTR lpszFace, int nEscapement, int nOrientation, int nWeight, bool bItalic, bool bUnderline, bool bStrikeOut);
    void setfont(int nHeight, int nWidth, LPCTSTR lpszFace, int nEscapement, int nOrientation, int nWeight, bool bItalic, bool bUnderline, bool bStrikeOut, BYTE fbCharSet, BYTE fbOutPrecision, BYTE fbClipPrecision, BYTE fbQuality, BYTE fbPitchAndFamily);
    void setfont(const LOGFONT *font); // 设置当前字体样式
    void getfont(LOGFONT *font); // 获取当前字体样式






    // 图像处理函数


    // 定义图像对象
    class IMAGE
    {
    private:
    HBITMAP m_hBmp;
    HDC m_hDC;
    int m_width, m_height;
    public:
    IMAGE();
    IMAGE(IMAGE &img); // 拷贝构造函数
    IMAGE& operator = (IMAGE &img); // 赋值运算符重载函数
    ~IMAGE();
    void getimage(int srcX, int srcY, int srcWidth, int srcHeight);
    void getimage(LPCTSTR pImgFile, int zoomWidth = 0, int zoomHeight = 0);
    void getimage(LPCTSTR pResType, LPCTSTR pResName, int zoomWidth = 0, int zoomHeight = 0);
    void getimage(const IMAGE *pSrcImg, int srcX, int srcY, int srcWidth, int srcHeight);
    void putimage(int dstX, int dstY, DWORD dwRop = SRCCOPY) const;
    void putimage(int dstX, int dstY, int dstWidth, int dstHeight, int srcX, int srcY, DWORD dwRop = SRCCOPY) const;
    void putimage(IMAGE *pDstImg, int dstX, int dstY, DWORD dwRop = SRCCOPY) const;
    void putimage(IMAGE *pDstImg, int dstX, int dstY, int dstWidth, int dstHeight, int srcX, int srcY, DWORD dwRop = SRCCOPY) const;
    };


    void getimage(IMAGE *pDstImg, int srcX, int srcY, int srcWidth, int srcHeight); // 从屏幕获取图像
    void getimage(IMAGE *pDstImg, LPCTSTR pImgFile, int zoomWidth = 0, int zoomHeight = 0); // 从图片文件获取图像(bmp/jpg/gif/emf/wmf)
    void getimage(IMAGE *pDstImg, LPCTSTR pResType, LPCTSTR pResName, int zoomWidth = 0, int zoomHeight = 0); // 从资源文件获取图像(bmp/jpg/gif/emf/wmf)
    void getimage(IMAGE *pDstImg, const IMAGE *pSrcImg, int srcX, int srcY, int srcWidth, int srcHeight); // 从另一个 IMAGE 对象中获取图像
    void putimage(int dstX, int dstY, const IMAGE *pSrcImg, DWORD dwRop = SRCCOPY); // 绘制图像到屏幕
    void putimage(int dstX, int dstY, int dstWidth, int dstHeight, const IMAGE *pSrcImg, int srcX, int srcY, DWORD dwRop = SRCCOPY); // 绘制图像到屏幕(指定宽高)
    void putimage(IMAGE *pDstImg, int dstX, int dstY, const IMAGE *pSrcImg, DWORD dwRop = SRCCOPY); // 绘制图像到另一图像中
    void putimage(IMAGE *pDstImg, int dstX, int dstY, int dstWidth, int dstHeight, const IMAGE *pSrcImg, int srcX, int srcY, DWORD dwRop = SRCCOPY); // 绘制图像到另一图像中(指定宽高)






    // 其它函数


    int getwidth(); // 获取绘图区宽度
    int getheight(); // 获取绘图区高度
    int getx(); // 获取当前 x 坐标
    int gety(); // 获取当前 y 坐标


    void BeginBatchDraw(); // 开始批量绘制
    void FlushBatchDraw(); // 执行未完成的绘制任务
    void FlushBatchDraw(int left, int top, int right, int bottom); // 执行指定区域内未完成的绘制任务
    void EndBatchDraw(); // 结束批量绘制,并执行未完成的绘制任务
    void EndBatchDraw(int left, int top, int right, int bottom); // 结束批量绘制,并执行指定区域内未完成的绘制任务


    HWND GetHWnd(); // 获取绘图窗口句柄
    int GetGraphicsVer(); // 获取当前版本






    // 鼠标消息
    // 支持如下消息:
    // WM_MOUSEMOVE 鼠标移动
    // WM_MOUSEWHEEL 鼠标滚轮拨动
    // WM_LBUTTONDOWN 左键按下
    // WM_LBUTTONUP 左键弹起
    // WM_LBUTTONDBLCLK 左键双击
    // WM_MBUTTONDOWN 中键按下
    // WM_MBUTTONUP 中键弹起
    // WM_MBUTTONDBLCLK 中键双击
    // WM_RBUTTONDOWN 右键按下
    // WM_RBUTTONUP 右键弹起
    // WM_RBUTTONDBLCLK 右键双击
    struct MOUSEMSG
    {
    UINT uMsg; // 当前鼠标消息
    bool mkCtrl; // Ctrl 键是否按下
    bool mkShift; // Shift 键是否按下
    bool mkLButton; // 鼠标左键是否按下
    bool mkMButton; // 鼠标中键是否按下
    bool mkRButton; // 鼠标右键是否按下
    short x; // 当前鼠标 x 坐标
    short y; // 当前鼠标 y 坐标
    short wheel; // 鼠标滚轮滚动值(120的倍数)
    };


    bool MouseHit(); // 检查是否存在鼠标消息
    MOUSEMSG GetMouseMsg(); // 获取一个鼠标消息。如果没有,就等待
    void FlushMouseMsgBuffer(); // 清空鼠标消息缓冲区





    展开全文
  • TurboC提供了非常丰富的图形函数,所有图形函数的原型均在graphics.h中,本节主要介绍图形模式的初始化、独立图形程序的建立、基本图形功能、图形窗口以及图形模式下的文本输出等函数。另外,使用图形函数时要确保有...
  • OpenCV识别图形以及常用函数处理

    千次阅读 2019-07-07 20:34:35
    常用函数介绍 前言 OpenCV在图像处理与计算机视觉方面有很多通用算法。因此可以用来人脸识别、图形识别、文字识别等等。对于复杂一点识别的可能还涉及到大量的识别训练,最后的匹配比较分类等等。后续可能会介绍...
  • (2)C语言常用图形函数

    万次阅读 多人点赞 2016-12-05 20:49:22
    屏幕颜色的设置和清屏函数 ① 设置背景色:void setbkcolor(int color); ② 设置前景色:void setcolor(int color);  ...③ 清除图形屏幕内容,使用清屏函数,其调用...基本图形函数 ① 画点函数:  将点(x, y
  • Processing 基本函数绘制图形

    万次阅读 多人点赞 2017-07-29 22:07:28
    老师:就你这成绩还受影响?你的成绩还有下降空间吗? ——《夏洛特烦恼》一幅绘画作品能够透射出画者的内心世界,展示画者的心情、心绪、心意、心迹、心性。绘画的本身就是画者倾诉情感的一种方式。绘画是通过...
  • matlab中三维图形绘制函数

    万次阅读 2016-08-27 17:25:38
    plot3是最基本的三维图形函数,它将二维plot函数的功能拓展到三维空间,其基本的调用格式为plot3(x1,y1,z1,'图形设置选项1',x2,y2,z2,'图形设置选项2'……xn,yn,zn,'图形设置选项n') 2.meshgrid meshgrid生成...
  • C语言中图形函数及其用法

    千次阅读 2014-01-06 10:14:15
    C语言中图形函数及其用法 Turbo C 2.0具有丰富的图形功能,它提供了70多个图形函数。在这里只介绍最常用的一部分,其余的图形函数及用法可参阅相关书籍。图形函数均在头文件"graphics.h"中定义,所以在程序中调用...
  • 绘制三维图形的基本函数

    万次阅读 2018-10-29 17:17:16
    1.绘制三维图形的基本函数   1 2 3 4 5 6 最基本的三维绘图函数为plot3; plot3与plot用法十分相似,调用格式:   plot(x1,y1,z1,选项1,x2,y2,z2,选项2,...,...
  • matlab中size函数的用法: size()用来求矩阵的维度, ...waterfall(A)这个函数是画一个三维的图形,这个函数的参数是一个矩阵,并且或者的三维的图形是 x坐标和y坐标的大小限制,分别是矩阵的行数,和矩阵的列数。
  • Python 绘制函数图形

    千次阅读 2017-04-22 16:06:18
    如果希望在程序中调节的话,可以调用subplots_adjust函数,它有left, right, bottom, top, wspace, hspace等几个关键字参数,这些参数的值是0到1之间的小数,它们是以绘图区域的宽高为1进行正规化之后的坐标或者...
  • 一,使用plot()函数制作简单图形 例子 #描述病人对两种药物五个计量水平上的响应情况 #计量水平 does <- c(20,30,40,45,60) #对药物A的响应情况 drugA <- c(16,20,27,40,60) #对药物B的响应情况 drugB <- c...
  • R中设置图形参数--函数par()详解

    万次阅读 2016-07-23 14:32:06
    但是有时候默认的图形设置没法满足我们的需要,甚至会碰到各种各样的小问题:如坐标轴或者标题出界了,或者图例说明的大小或者位置遮挡住了图形,甚至有时候默认的颜色也不满足我们的需求。如何进行调整呢?这就...
  • [转]Turbo C图形函数

    万次阅读 2005-03-07 14:38:00
    图形函数 图形函数 Turbo C提供了非常丰富的图形函数, 所有图形函数的原型均在graphics. h中, 本节主要介绍图形模式的初始化、独立图形程序的建立、基本图形功能、图形窗口以及图形模式下的文本输出等函数。另外, ...
  • PostGIS教程十四:几何图形创建函数

    千次阅读 2019-01-22 11:56:41
    目录 一、ST_Centroid / ST_PointOnSurface ... 目前我们看到的所有函数都可以处理已有的几何图形并返回结果: 分析几何图形(ST_Length(geometry), ST_Area(geometry)) 几何图形的序列化(ST_AsText(geometr...
  • Python 写函数,专门计算图形的面积

    千次阅读 2020-08-07 23:18:25
    函数,专门计算图形的面积 其中嵌套函数,计算圆的面积,正方形的面积和长方形的面积 调用函数area(‘圆形’, 圆半径) 返回圆的面积 调用函数area(‘正方形’, 边长) 返回正方形的面积 调用函数area(‘长方形’, ...
  • 【计算机图形学课程】一.MFC基本绘图函数使用方法

    万次阅读 多人点赞 2016-11-16 04:45:51
    这是最近我《计算机图形学》课程实践编程课介绍的相关知识,主要是想通过MFC C++绘图,让学生体会下图形学相关的编程及简单的图形绘制,同时非常佩服学生的想象力,他们做得真的不错。希望这篇基础文章对你有所帮助...
  • 什么是卡诺图 从几何位置上看可以看做循环相邻的图形
  • 计算机图形学常用的数学函数图像

    千次阅读 2020-02-13 00:21:07
    用于函数绘图的网站 desmos 公式图 公式 说明 图像 y=x2y = x ^2y=x2 当x < 0时,x越大则 y值越小。当x > 0时,x越大则y值越大,幅度渐大 y=x3y = x ^3y=x3 x 越大则 y值越大,幅度渐大 y=log(x...
  • R图形参数-par() 函数详解

    万次阅读 2017-01-16 15:18:48
    使用par() 函数的目的: 优化R中默认的图形参数设置,使其更好地展示自己的数据,避免如坐标轴或者标题出界或者图例说明的大小或者位置遮挡住了图形等情况出现。 用法: par(…, no.readonly = FALSE)
  • 为了明确表示颜色和数值的对应关系,一般还需要指令colorbar表示各种颜色所代表的数值。 一、matlab画复变函数图形的指令 matlab画复变函数图形的指令有以下3个 (1)CPLXGRID 构建一个极坐标的...
  • 函数组:BUSG(SAP 商业图形库)

    千次阅读 2011-08-11 16:45:01
    函数组:BUSG:SAP商用制图,本函数组中包含很多用来把内表数据展示成图形函数工具,调用后会打开一个普通 Windows 窗口,在其中显示图形函数列表: GET_BUSG_OPTS Read options after restori
  • 图形学理论知识 BRDF 双向反射分布函数 Bidirectional Reflectance Distribution Function   BRDF理论  BRDF表示的是双向反射分布函数(Bidirectional Reflectance Distribution Function),它描述了光线如何...
  • 上一篇文章我们讲述MFC绘制图形的基本函数,包括绘制直线、绘制矩形、绘制椭圆及绘制文字,同时通过绕圆旋转和矩形平移简单的理解了图形学知识。这篇文章我将介绍鼠标响应和键盘响应,通过这些事件让学生实现一个...
  • 值为1表示对应像素前面设定的颜色显示;否则,对应像素不受该位图影响。(作为一个选项,可使用1表示将指定颜色与存储在刷新缓存中对应位置的颜色值相结合。)参数x0和y0定义了矩形阵列“原点”的位置。原点位置指定...
  • 此次我们换一种非常好用的图形证明法,简直是一图胜千言,可以帮助我们顺利推导出正弦、余弦和正切的和角、差角公式,而且让你一辈子忘不了! 让我们从正弦和余弦的和角公式开始吧! 我一直坚持:优美的图形胜过...
  • 使用MATLAB实现计算结果的图形表示

    千次阅读 2014-01-08 23:34:48
    通过本节熟习Matlab相关计算结果的图形表示指令。计算结果可视化是Matlab的主要组部分进进出。Matlab图形具有自然,简结,灵活,易扩展的特点。 例1:画出曲线y=exp(-t/3)*sin3t及其他的包络线y0=exp(-t/3). close ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 220,249
精华内容 88,099
关键字:

任何图形都能用函数表示吗