TC 编程重要 函数

本文详细介绍了Turbo C(TC)编程中涉及的屏幕操作函数,包括clrscr()、window()、gotoxy()等,并讲解了字符属性函数如textmode()、textcolor()等,以及屏幕状态函数wherex()和wherey()。此外,还提及了图形模式下的函数,如initgraph()和closegraph()。这些函数是TC图形编程的基础,对于理解和使用TC进行字符及图形输出至关重要。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

 

注释由来: 

当时在学习过程中我问了自己TC中的EgaVga.bgi文件的作用?为什么要必须和图形软件放一起?——> 查资料学到:如何把EGAVGA.BGI图形驱动程序 加到图形程序中作为一部分。

资料学习中的lineto()函数是如何用的?——>查资料到:有个类似函数linerel() 比较不知何用?——> 查资料得21视频网:www.21shipin.com/c.aspx; TC常用函数总结集;得通用键盘鼠标代码;得TC中图形转化、装换数学指导。

   

    下面是我对上述知识点自己学习归纳:

 

一、屏幕操作函数

     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() 获取文本窗口信息函数

 

    字符和图外形态下,屏幕上的位置: 字符状态左上角坐标为(1,1),但图形左上角坐标为(0,0)    了解字符屏幕和图形函数与窗口和视口的关系是很重要的。常用的几类字符屏幕函数的功能用途、操作方法及其例行程序。

 

一、屏幕操作函数

 

1. clrscr()清除字符窗口函数

功能:清除整个当前字符窗口,把光标定位于左上角(1,1)处。

用法: void clrscr(void);

说明: 该函数相应的头文件为conio.h

 

2. window()字符窗口函数

功能:在指定位置建立一个字符窗口。

用法: void window(int left,int top,int right,int bottom);

说明: 头文件为conio.h

 

3. gotoxy()光标定位函数

功能: 将字屏幕上的光标移到当前窗口指定的位置上。

用法: void gotoxy(int x,int y);

说明: 头文件为conio.h

 

4. clreol() 清除光标行尾字符函数

功能: 在当前字符窗口中清除从光标位置到行尾的所有字符,而光标位置保持不变。

用法: void clreol(void);

说明: 头文件为 conio.h

 

5. insline() 插入空行函数

功能:插入一空行到当前光标所在行上,同时光标以下的所有行都向下顺移一行。

用法: void insline(void);

说明: 该函数只用于文本方式,并且在当字符窗口才有效。头文件是 conio.h

 

6. delline() 删除一行函数

功能: 删除当前窗口内光标所在行,同时把该行下面 所有行都上移一行。

用法: void delline(void);

说明: 注重,假如当前窗口小于整个屏幕,那么该函数只影响到窗口内的字符。

       头文件是conio.h

 

7.gettext() 拷进文字函数

功能:用于文本状态下将屏幕上矩形域内的文字拷进内存。

用法: int gettext (int left,int top,int right,int bottom,void *buffer);

说明: 坐标是屏幕的绝对坐标,不是窗口的相对坐标。buffer指针内存大小:

   点头用字节数=矩形域内的行数×矩形域的列数×2

每个字符要用两个字节存储单元,一个字节存储单元存放字符本身,而另一个存放其属性。

头文件是 conio.h

返回值: 成功则返回1,否则返顺0

例:    buf=(char *)malloc(10*10*2);   if(!buf)gettext(1,1,10,10,buf);

 

8. puttext() 拷出文字函数

功能: buffer指向文字拷出到屏幕上一个矩形区域中。

用法:  int puttext(int left,int top,int right,int bottom,void *buffer);

说明:其坐标是用屏幕的绝对坐标,而不是用窗口的相对坐标。头文件为conio.h

返回值:成功返回值为1,否则返回0

 

9. movetext() 移动文字函数

功能: 将屏幕上一个矩形区域的文字移到另一个区域上。

用法: int movetext(int left,int top,int right,int bottom,int newleft,int newtop);

说明: 头文件是conio.h

返回值:坐标无效,返回值为0,否则返回1

 

10. textmode() 文本模式函数

功能: 屏幕设置为文本模式(或者说字符状态)

用法:  void textmode(int mode);

说明:      文本模式

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

模式名(符号值)         等价整数值        

BW40                      0          40列黑白

C40                        1          40列彩色

BW80                      2          80列黑白

C80                        3          80列彩色

MONO                     7          80列单色

LASTMODE                -1          上次模式

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

头文件是conio.h

 

二、字符属性函数

 

11. highvideo()高亮度函数

功能: 设置屏幕为高亮度显示。

用法: void highvideo(void);

说明:写到屏幕上的字符是高亮度的。只适用于文本模式状态。    头文件为 conio.h

 

12. lowvideo() 低亮度函数

用法: 该函数调用方式为void lowvideo(void);

 

13. normvideo(void);

功能: 函数normvideo()设置屏幕为正常亮度显示。

用法: 这个函数调用方式为void normvideo(void);

 

14. textcolor() 文本颜色函数

功能: 设置字符屏幕下文本颜色(或字符颜色)

用法: void textcolor(int color);

说明:   颜色名与等价值

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

                 等价值     

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          闪烁

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

假如要使字符带颜色闪烁,就必须将所选的颜色值与128作“或”运算。头文件是 conio.h

 

15. textattr() 文本属性

功能:设置文本属性,即字符背景颜色、字符本身颜色和字符闪烁与否。

如蓝背景、黄字符且闪烁,就设置成为:   YELLO|128|BLUE*16

用法: void textattr(int attribute);

 

16.textbackground() 文本背景函数

用法: void textbackground(int bcolor);

说明: 背景颜色与等价值

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

   背景颜色            等价值           

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

   BLACK                 0              

   BLUE                  1              

   GREEN                 2               绿

   CYAN                  3              

   RED                   4              

   MAGENTA              5               洋红

   BROWN                6              

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

只影响后续写的字符背景颜色。头文件是conio.h

 

三、 屏显状态函数

 

17. wherex() 光标处x坐标函数

功能:  返回当前窗口中光标处横向坐标。

用法:  int wherex(void);

说明:  头文件是conio.h    返回光标处x坐标值。

 

18. wherey() 光标处y坐标函数

用法:  int wherey(void);

 

19. gettextinfo() 获取文本窗口信息函数

功能:获取当前文本窗口信息,并存放在实参结构中。

用法:void gettextinfo(struct text-info *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坐标

  };

     头文件是conio.h

C语言图形编程

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

图形显示函数

    21. initgraph() 图形初始化函数

    27. graphdefaults()图形设置复位缺省值函数

    35. closegraph()关闭图形模式函数

   

三、图形显示

    进行图形显示首先要确定显示卡,然后选择其显示模式。其实就是把适合于显示卡的图形驱动程序装入内存。假如图形驱动程序未装入内存,那么图形函数就不能操作。

 

21. 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

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

3)参数path指向图形驱动程序所在的路径,例如path="C:\TC\BG1".若没有指定路径,就在当前目录下寻找。

 

 

27. graphdefaults()图形设置复位缺省值函数

功能:把所有图形设置复位为它们的缺省值,这包括把图形视口复位为全屏幕;当前位置定位在0,0;调色板、背景色和绘图色都被复位;填充颜色、填 充图样、文本文字和排齐方式都返回到它位的缺省值。

用法: void graphdefaults(void);

说明:头文件为graphics.h

 

35. closegraph()关闭图形模式函数

用法: void closegraph(void);

说明: 当用户的程序既用到图形输出又用到非图形输出时,应该调用此函数。非凡是程序多次调用initgraph()函数的情况,要相应地调用closegraph函数,释放调用initgraph()所占用的内存,否则内存很快就满了,程序无法运行,假如程序结束,也可以用restorecrtmode()函数代替该函数,这样任何分配的内存都将释放。

      头文件是graphics.h


         绘图函数

屏幕和视口设置与清除函数
    36. setviewport() 设置图形视口函数
    37. clearviewport()
清除图形视口函数
    38. cleardevice()
清除屏幕函数
    39. getviewsettings()
获取图形视口设置函数

调色板和颜色函数
    40. setpalette()
设置调色板函数
    41. setallpalette()
设置整个调色板函
    42. setbkcolor()
设置背景颜色函数
    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()
相对移动函数
----------------------------------------------------

  
一般绘图时,首先要清除屏幕,设置图形视口,设置绘图颜色,然后在屏幕上某个位置画点或直线或曲线等。

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

36. setviewport() 设置图形视口函数
功能: 设置当前图形视口。
用法: void setviewport(int left,int top,int right,int bottom,int clipflag);
说明: 绝对屏幕坐标。

     clip
1,则超出视口的输出图形自动被裁剪掉,即所有作图限制于当前图形视口之内,假如clip0,则不做裁剪。若无效参数传入setviewport(),graphresult()函数返回值-11,先前视口设置仍有效。
     
头文件为 graphics.h

37. clearviewport()清除图形视口函数
功能: 清除当前图形视口,并把光标从当前位置移到原点(0,0)
用法: void clearviewport(void);
说明:  头文件是graphics.h     清除当前图形视口,但并非整个屏幕:


38. cleardevice() 清除屏幕函数
功能: 清除整个屏幕,并且将当前位置移到屏幕原点。
用法: 此函数调用方式为void cleardevice(void);
说明: 类似于文本模式下的函数clrscr()。 头文件为
graphics.h

39. getviewsettings() 获取图形视口设置函数
功能: 返回当前图形视口坐标和裁剪标志,坐标是绝对屏幕坐标,裁剪标志 1 0
用法: void getviewsettings(struct viewporttype *info);
说明: viewporttype结构定义如下:

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

40. setpalette()设置调色板函数
功能: 对调色板上的颜色的色彩值重新设定。
用法: void setpalette(int value,int color);
说明: 参数value为色彩值,color为色彩值相应的颜色名。

预先定义的调色板与色彩
-----------------------------------------------------------------
调色板         色彩0         色彩1         色彩2         色彩3
-----------------------------------------------------------------
  C0            
黑色         淡绿           红浅          黄色

  C1            
黑色         淡青           粉红          白色
  C2            
黑色         绿色           红色          棕色
  C3           
黑色         青色          品粉红        淡灰色
-----------------------------------------------------------------

头文件为graphics.h

41. setallpalette()设置整个调色板函
功能:对某个调色板上的所有颜色重新设定彩色值。
用法: void setallpalette(struct palettetype *p);
说明: 在低分辨率图形显示模式下,该函数无效。若函数调用成功,则把p指向的palettetype结构中的色彩值设置为当前调色板所有颜色的新色彩值。

   palettetype
结构定义如下:
   struct palettetype {      unsigned char size;      signed char color[16];   };
这里必须把size设置为调色板颜色的数目,并把每个色彩值都装入color数组相应元素中,然后才可用于调用函数。
     
此函数对应的头文件是graphics.h

42. setbkcolor() 设置背景颜色函数
功能:把当前调色板颜色的第一个值改成指定的颜色值,以设置背景颜色。
用法:  void setbkcolor(int color);
说明: 参数color为指定的背景色,其有效值可以是颜色符号名,也可以是色彩值。

      
背景颜色值
-----------------------------------------------------------------
  
颜色符号名         色彩值      颜色符号名         色彩值
-----------------------------------------------------------------
   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
-----------------------------------------------------------------
 
43. setcolor() 设置颜色函数
功能:设置当前绘图颜色(或称做前景色)
用法: voids setcolor(int color);
说明:在高分辨率显示模式下,选取的color是实际色彩值,也可以用颜色符号名表示。假如已经摇篮函数setpalette()改变了调色板色彩值,那么符号名就不可能产生预期作用了。

  
在低分辨率显示模式(320X200)下,选取的color是调色板颜色号,不是实际色彩值。
     
头文件为graphics.h

44. getbkcolor() 返回背景色函数
功能: 返回当前背景颜色。
用法: int getbkcolor(void);

45. getcolor() 返回当前绘图颜色
用法: int getcolor(void);

46. getmaxcolor()返回当前图形模式下最大颜色值
用法: int getmaxcolor(void);
说明: 该函数调用后,在低分辨率模式下返回值为3(这种模式下有效颜色值为03);在高分辨率显示模式下返回值可以是256或更高(此模式下有效颜色值为0256或更高)

    
头文件为graphics.h

47. getpalette() 获取调色板函数
功能: 函数getpalette()将当前调色板的值填入palettetype型结构中。
用法: void getpalette(struct palettetype *p);
说明:
  
   #define MAXCOLORS 15
   struct palettetype {
      unsigned char size;//
当前调色板的有效颜色个数

      signed char colors[MAXCOLORS+1];//
相应颜色值
   };
      
颜色值(适用于EGA/VGA)
---------------------------------------------------
  
颜色符号名                  色彩值

---------------------------------------------------
   EGA_BLACK(EGA
黑色)            0
   EGA_BLUE(EGA
蓝色
)             1
   EGA_GREEN(
绿色
)               2
   EGA_CYAN(EGA
青色
)             3
   EGA_RED(
红色
)                 4
   EGA_MAGENTA(EGA
品红
)          5
   EGA_BROWN(EGA
棕色
)            20
   EGA_LIGHTGRAY(EGA
淡灰
)        7
   EGA_DARKGRAY(EGA
深灰
)         56
   EGA_LIGHTBLUE(EGA
淡蓝
)        57
   EGA_LIGHTGREEN(EGA
淡绿
)       58
   EGA_LIGHTCYAN(EGA
淡青
)        59
   EGA_LIGHTRED(EGA
淡红
)         60
   EGA_LIGHTMAGENTA(EGA
粉红
)     61
   EGA_YELLOW(EGA
黄色
)           62
   EGA_WHITE(EGA
白色
)            63
---------------------------------------------------
      getpalette()
函数对应的头文件是graphics.h


48. getpalettesize() 返回调色板大小函数
功能:返回当前显示模式支持的调色板的颜色数目。
用法: int getpalettesize((void);

三、屏幕位置函数

50. getmaxx()返回最大x坐标函数
功能: 函数getmaxx()返回当前图形模式下的最大x坐标,即最大横向坐标。
用法: int maxx(void);
说明: 此函数独立于图形视口设置,仅取决于显示卡的显示模式相应的分辨率。

     
头文件是graphics.h

51. getmaxy() 返回最大y坐标函数
用法: int getmaxy(void);

52. getx() 返回x坐标函数
功能: 返回当前图形模式下当前位置的x坐标(水平像素坐标)
用法: int getx(void);
说明: 这里坐标是相对于当前图形视口的,这类似于文本模式下使用wherex()函数。


53. gety() 返回y坐标函数
用法: int gety(void);

54. moveto()函数
功能: 函数moveto()将当前位置移动到指定坐标的位置
说明:相当于文本模式下gotoxy()函数的操作,它提供对等的功能。

55. moverel() 相对移动函数
用法: void moverel(int dx,int dy);

图形和图像函数

 像素函数

    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. get视频教程'>aspectratio()获取纵横比函数

    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);

头文件是graphics.h

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

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

用法: int getpixel(int x,int y);

说明: 函数的返回值可以不反映实际彩色值,这取决于调色板的设置情况(参见setpalette()函数)      头文件为graphics.h

() 直线和线型函数

   有三个画直线的函数,即line(),lineto(),linerel()。这些直线使用整型坐标,并相对于当前图形视口,但不一定受视口限制,假如视口裁剪标志clip为真,那么直线将受到视口边缘截断;假如clip为假,即使终点坐标或新的当前位置在图形视口或屏幕极限之外,直线截断到屏幕极限。

58. line() 画线函数

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

用法: void line(int startx,int starty,int endx,int endy);

59. lineto() 画线函数

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

用法: void lineto(int x,int y);

60.linerel() 相对画线函数

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

用法: void linerel(int dx,int dy);

61. setlinestyle() 设置线型函数

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

用法: void setlinestyle(int stly,unsigned pattern,int width);

说明:   参数pattern用于自定义线图样,它是16(bit)字,只有当style=USERBIT_LINE(值为1)时,pattern的值才有意义,使用用户自定义线图样,与图样中“1”位对应的像素显示。     pattern=0xFFFF,则画实线;     pattern=0x9999,则画每隔两个像素交替显示的虚线;      要画长虚线,那么pattern的值可为0xFF000xF00F    style不为USERBIT_LINE值时一般取为0

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

1-10  参数style为线型

   SOLID_LINE          0             实线

   DOTTED_LINE         1             点线

   CNTER_LINE          2             中心线

   DASHED_LINE         3             虚线

   USERBIT_LINE        4             用户自定义线型

1-11参数width线宽

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

   THICK_WIDTH(加宽)          3         三个像素宽

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

功能: 用当前设置的线型、线图样和线宽填写linesettingstype型结构。

用法: void getlinesettings(struct linesettingstype *info);

说明:   struct linesettingstype {

 int linestyle;  unsigned upattern;      int thickness;// 线宽    };

       头文件为graphics.h

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

用法: void setwritemode(int mode);

说明: 参数mode只有两个取值01     mode0,则新画的线将复盖屏幕上原有的图形,此为缺省画线输出模式。     mode1,那么新画的像素点与原有图形的像素点先进行异或(XOR)运算,然后输出到屏幕上,使用这种画线输出模式,第二次画同一图形时,将擦除该图形。      调用setwritemode()设置的画线输出模式只影响函数:line(),lineto(),linerel(),recangle()drawpoly()     头文件是graphics.h

()、多边形函数

64. rectangle() 画矩形函数

功能:用当前绘图色、线型及线宽,画一个给定左上角与右下角的矩形(正方形或长方形)

用法: void rectangle(int left,int top,int right,int bottom);

说明: 如有一个以上角点不在当前图形视口内,且裁剪标志clip设置的是真(1),那么调用该函数后,只有在图形视口内的矩形部分才被画出。

      头文件为graphics.h

65. bar() 画条函数

用法: void bar(int left,int top,int right,int bottom);

说明: 调用此函数前,可用setfillstyle()或setfillpattern()设置当前填充图样和填充色。

注重此函数只画没有边线的条形,假如要画有边线的的条形,可调用下面的函数bar3d()来画,并将深度参数设为0,同时topflag参数要设置为真,否则该条形无顶边线。

66.bar3d() 画条块函数

功能: 函数bar3d() 使用当前绘图色、线型及线宽画出三维长方形条块,并用当前填充图样和填充色填充该三维条块的表面。

用法: void bar3d(int left,int top,int right,int bottom,int depth,int topflag);

说明:  深度方向通过屏显纵横比调节为约45(即这时x/y比设置为11)

参数topflag相当于一个布尔参数,假如设置为1()那么条块上放一顶面;若设置为0(),则三维条形就没有顶面,这样可使多个三维条形叠加在一起。    要使图形更加美观,可利用函数floodfill()setfillpattern()来选择填充图样和填充色。

  67. drawpoly() 画多边形函数

功能: 用当前绘图色、线型及线宽,画一个给定若干点所定义的多边形。

用法: void drawpoly(int pnumber,int *points);

说明: 参数pnumber为多边形的顶点数;参数points指向整型数组,该数组中是多边形所有顶点(x,y)坐标值,即一系列整数对,x坐标值在前。显然整型数组的维数至少为顶点数的2倍,在定义了多边形所有顶点的数组polypoints时,顶点数目可通过计算sizeof(polypoints)除以2倍的sizeof(int)得到,这里除以2倍的原因是每个顶点有两个整数坐标值。另外有一点要注重,画一个n个顶点的闭合图形,顶点数必须等于n+1,并且最后一点(n+1)点坐标必须等于第一点的坐标。

()、 圆、弧和曲线函数

      为了保证几何图形基本按预计情况显示在屏幕上,用屏显的纵横比来计算和纠正不同硬件及显示卡产生的畸变。计算纵横比所需要的水平方向和垂直方向的比例系数可调用函数getaspectratio()获得。

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

功能: 函数getaspectratio()返回x方向和y方向的比例系数,用这两个整型值可计算某一特定屏显的纵横比。

用法: void getaspectratio(int xasp,int yasp);

说明: 参数xasp指向的变量存放返回的x方向比例系数;参数yasp指向的变量存放返回的y方向比例系数。通常y方向比例系数为10 000 x方向比例系数不大于10 000(这是因为大多数屏幕像素高比宽长)

   注重纵横比自动用作下面函数arc(),circle()pieslice()中的标尺因子,使屏幕上圆或弧正常显示。但用ellipse()函数画椭圆必须调用本函数获取纵横比作为标尺因子,否则不予调整。纵横比可用于其它几何图形,目的是校正和显示图形。

   头文件为graphics.h

返回值: 返回xy方向比例系数分别存放在xaspyasp所指向的变量中。

69. circle()画圆函数

功能: 函数circle()使用当前绘图色并以实线画一个完整的圆。

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

70. arc() 画圆弧函数

功能: 使用当前绘图色并以实线画一圆弧。

用法: void arc(int x,int y,int startangle,int endangle,int radius);

说明: startangleendangle分别为起始角与终止角, 0度位于右边,90度位于顶部,180度位于左边,底部是270度。

71. ellipse()画椭圆弧函数

void ellipse(int x,int y,int startangle,int endangle,int xradius,int yradius);

说明: ellipse()函数不同于arc()circle()函数,屏显纵横比不能自动调节。若需要的是成比例的半径而不是特定的像素距离,则y轴距离必须调节为yradius*aspectratio(y轴半径乘以纵横比)

   72. fillellipse() 画椭圆区函数

功能:使用当前绘图色画一椭圆,然后用当前填充色图样和填充色填充所画的椭圆。

用法: void fillellipse(int x,int y,int xradius,int yradius);

73. pieslice() 画扇区函数

功能:用当前填图样和填充色进行填充,即得扇区。

用法: void pieslice(int x,int y,int startangle,int endangle,int radius);

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

用法: void sector(int x,int y,int startangle,int endangle,int xradius,int yradius);

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

用法: void getarccoords(struct arccoordstype *coordsp);

说明:   struct arccoordstype {

      int x,y;      int xstart,ystart,xend,yend;   };

   其中,x,y存放中心坐标;xstart,ystart,xend,yend分别存放起终点坐标。

返回值: 返回最后一次调用圆或椭圆函数的相应起终点与中心坐标值

 ()、 填充函数

   前面已经涉及到了用填充图样和填充色填充图形的问题,如调用pieslice()画扇区就要用填充图样与填充色来填充区域。那么怎样设置填充图样和填充色呢?我们只要简单地学习并练习一下就会把握其方法。下面介绍用于设置填图样与填充色、建立用户自己的填充图样与填充封闭区域的几个常用函数。

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

用法: void setfillstyle(int pattern,int color);

说明:   1-12参数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         斜网格线填充

   INTEREAVE_FILL           9         间隔点填充

   WIDE_DOT_FILL            10        大间隔点填充

   CLOSE_DOT_FILL           11        小间隔点填充

   USER_FILL                12        用户定义图样填充

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

   除了EMPTy_FILL,所有填充图样都使用当前填充色,填充图样USER_FILL只有在用函数setfillpattern()已经建立一个用户定义的填充图样后才能使用。

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

功能: 设置用户的填充图样以供fllodfill(),fillpoly()填充函数等使用。

用法: void setfillpattern(char *pattern,int color);

说明: 参数color设置填充图样的颜色。参数pattern指向一字符数组,该数组至少8个字节长,它定义了一个8像素*8像素的用户填充图样。例如:

   char diamond[8]={0x10,0x38,0x7c,0xfe,0x7c,0x38,0x10,0x00};

   diamond8个字节的数组,每个字节对应于填充图样中的8个像素,字节中的1位,画出一个由color设定颜色的像素,字节中的0位则不画。实际上,diamond数组定义了一个7*7的小钻石图样,右边和底部都留有一个像素的边缘。

   调用setfillpattern()设置用户填充图样后,必须调用setfilstyle()函数,使USER_FILL值成为当前填充图样

78. floodfill() 填充闭域函数

功能:用当前填充图样和填充色填充一个由特定边界颜色(通常是当前绘图色)定义的有界封闭区域。

用法: void floodfill(int x,int y,int bordercolor);

说明: 这里参数(x,y)为指定填充区域中的某点,假如点(x,y)在该填充区域之外,那么外部区域将被填充,但受图形视口边界的限制。假如直线定义的区域出现间断,那么将导致泄漏,即使很小的间断,也将导致泄漏。也就是说,间断将引起区域外被填充。

   参数bordercolor为闭区域边界颜色,若可能的话,建议尽量用下面函数fillpoly()代替floodfill(),以便和将来的版本保持兼容。

   假如出错,graphresult()函数将返回错误代码-7(flood填充内存不足)

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

功能:用当前绘图色、线型及线宽画出给定点的多边形,然后用当前填充图样和填充色填充这个多边形。

用法: void fillpoly(int pointnum,int *points);

说明: fillpoly()的调用形式与drawpoly()的一样,其参数含义相同。该函数中pointnum为所填充多边形的顶点数,points指向存放所有顶点坐标的整型数组。有时顶点数目是通过过计算sizeof(整型数组)除以两倍的sizeof(int)然后得到的,之所以除以两倍的sizeof(int)是因为每个顶点需要两个整型坐标。

注重,fillpoly()是通过连接起点和终点将图形封闭起来,然后填充被包围的区域。与floodfill()不同的是,fillpoly()所用的填充方法不依靠边界连续的轮廓来确定填充区域。这样间断的线型是答应的,并且可以很简单地填充多边形确定的区域,包括在新的边界范围内任何其它图形上重画。

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

功能:从该结构中获得当前填充设置(填充图样和填充色)

用法: void getfillsettings(struct fillsettingstype *info);

说明:   struct fillsettingstype {

         int pattern;         int color;   };

 ()、图像函数

   图像复制、擦除以及一般对屏幕图像的操作,这对应用程序是非常有用的,对动画制作是必不可少的。BC提供了以下几个图像操作函数。

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

功能:返回存储一块屏幕图像所需的内存大小(即字节数)

用法: unsigned imagsize(int left,int top,int right,int bottom);

说明:   函数调用执行后,返回存储该块屏幕所需要的字节数。假如所需要字节数大于64KB,那么将返回-1imagesize()函数一般与下面getimage()函数联用。

   头文件为graphics.h

83. getimage() 保存图像函数

功能:保存左上角与右下角所定义的屏幕上像素图形到指定的内存区域。

用法: void getimage(int left,int top,int right,int bottom,void *buf);

84. putimage() 输出图像函数

功能: 将一个先前保存在内存中的图像输出到屏幕上。

用法: void putimage(int left,int top,void *buf,int ops);

说明:参数ops控制图像以何种方式输出到屏幕上。图像输出方式

   COPy_PUT              0         图像输出到屏幕上,取代原有图像

   xOR_PUT               1         图像和原有像素作异或运算

   OR_PUT                2         图像和原有像素作或运算

   AND_PUT               3         图像和原有像素作与运算

   NOT_PUT               4         把求反的位图像输出到屏幕上

 

图像函数是对屏幕图像操作进行讨论的,但对屏幕图形同样适用。实际上,屏幕图形也是一种特定的屏幕图像,它可称为外形屏幕图像或称轮廓屏幕图像。因此图像与图形不必区分。

图形文本

一、图形文本函数

    85. outtext() 当前位置显示字符串函数

    86. outtextxy() (x,y)处显示字符串函数

    87. sprintf() 格式化输出函数

二、图形文本设置

    88. settextstyle() 设置文本型式函数

    89. settextjustify() 设置文本排齐函数

    90. setusercharsize() 设置用户字符比例函数

    91. gettextsettings() 获取文本设置函数

    92. textheight() 文本高度函数

    93. textwidth() 文本宽度函数

一、图形文本函数

   在图形模式下,屏幕上显示字符串,可以用outtext(),outtextxy()sprintf()

85. outtext() 当前位置显示字符串函数

功能:在图形模式下用当前文本设置(字体、字符大小、文本显示方向及文本排齐方式)在当前位置显示一个字符串。

用法: void outtext(char *string);

说明:    假如当前显示方向是水平的,那么当前光标位置CP会移动所显示字符的长度,否则CP不变;在图形模式下,光标不可见,但是即使是不可见光标,在屏幕上光标位置CP还是存在的。

   头文件是graphics.h

 

86. outtextxy() (x,y)处显示字符串函数

用法: void outtextxy(int x,int y,char *string);

 

87. sprintf() 格式化输出函数

功能: 函数sprintf()用来作格式化的输出。

用法: int sprintf(char *string,char *format,arg_list);

 

二、图形文本设置

88. settextstyle() 设置文本型式函数

功能: 设置图形文本当前字体、文本显示方向(水平显示或垂直显示)以及字符大小。

用法: void settextstyle(int font,int direction,int charsize);

说明: 函数括号中,font为文本字体参数,direction为文本显示方向,charsize为字符大小参数。     图形文本标准字体

   DEFAULT_FONT               0         8*8点阵字型(缺省字体)

   TRIPLEx_FONT                1         笔划式三倍字型(三倍字体)

   SMALL_FONT                  2         笔划式小字型(小字体)

   SANS_SERIF_FONT             3         笔划式字(Sanserif字体)

   GOTHIC_FONT                 4         笔划黑体字型(哥特体)

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

   在设置字体之前,被选字体的.CHR文件必须装在initgraph()中指定的driverpath(驱动程序路径)目录或子目录里。

缺省时图形文本显示方向为水平方向,但可以设置图形文本显示方向为垂直方向(逆时针转90)      图形文本显示方向。

   显示方向符号名       等价值                 

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

   HORIZ_DIR               0        从左到右显示(水平方向)

   VERT_DIR                1        从底向上显示(垂直方向)

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

在垂直显示时,文本字符串从底部向上显示,目前还没有现成的规定从上到下或从左到右的显示,但若需要也可设计。

对点阵字体,字符大小可以在010之间选择。对于笔划字体,charsize(字符大小参数)=0表示以缺省比例显示即4倍或由函数setusercharsize()设置的用户自定字符的比例放大显示。最大有效的charsize值为0

   假如有错误参数值传给函数settextstyle(),graphresult()函数将给出值-11(表示一般图形错误),当前的文本型式保持不变。   头文件为graphics.h

 

89. settextjustify() 设置文本排齐函数

功能:设置水平方向和垂直方向的文本排齐方式。

用法: void settextjustify(int horiz,int vert);

说明: 参数horiz,vert确定水平方向、垂直方向的文本排齐方式。

图形文本排列方式

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

   水平方向排齐         等价值         垂直方向排齐         等价值

      符号名                              符号名

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

   LEFT_TExT               0            BOTTOM_TExT            0

   CENTER_TExT             1            CENTER_TExT            1

   RIGHT_TExT              2            TOP_TExT               2

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

 

90. setusercharsize() 设置用户字符比例函数

功能: 函数setusercharsize() 可以让用户自定义笔划字体的字符比例,但对于缺省字体的字符无效,因为缺省字体是由硬件定义的8*8点阵字体。

用法: void setusercharsize(int xmul,int xdiv,int ymul,int ydiv);

说明: 参数xmul/xdiv为设置的字符宽度比例,参数ymul/ydiv为设置的字符高度比例。该函数调用后,屏幕上显示的字符宽为其缺省值8个像素乘以宽度比例,高为其缺省值8个像素乘以高度比例。注重,只有在调用settextstyle()函数设置参数charsize0 时,字符调节参数才有效。   头文件为graphics.h

 

91. gettextsettings() 获取文本设置函数

用法: void gettextsettings(struct textsettingstype *info);

说明:   strcut textsettingstype {

         int font;     // 字体

         int direction;    // 水平或垂直方向

         int charsize;     // 字符大小

         int horiz;        // 水平排齐方式

         int vert;         // 垂直排齐方式

      };

 

horizvert为文本排齐方式变量,其值是下列中的一个:

      LEFT_TExT            0         CP(当前位置在左边)

      CENTER_TExT          1         CP在中心

      RIGHT_TExT           2         CP在右边

      BOTTOM_TExT          3         CP在底部

      TOP_TExT             4         CP在顶部

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

 

92. textheight() 文本高度函数

功能: 返回字符串的高度。

用法: int textheight(char *string);

说明: 参数string指向字符串.函数textheight()按当前字体、字符大小、比例因子和文本方向,计算出字符串高度的像素数。这可以是当前单字符的高度,也可以是当前整个字符串的高度值。        对应的头文件为graphics.h

返回值: 返回字符串高度像素数。

 

93. textwidth() 文本宽度函数

用法: int textwidth(char *string);

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值