C语言图形编程.docx

上传人:b****2 文档编号:689148 上传时间:2023-04-29 格式:DOCX 页数:119 大小:230.73KB
下载 相关 举报
C语言图形编程.docx_第1页
第1页 / 共119页
C语言图形编程.docx_第2页
第2页 / 共119页
C语言图形编程.docx_第3页
第3页 / 共119页
C语言图形编程.docx_第4页
第4页 / 共119页
C语言图形编程.docx_第5页
第5页 / 共119页
C语言图形编程.docx_第6页
第6页 / 共119页
C语言图形编程.docx_第7页
第7页 / 共119页
C语言图形编程.docx_第8页
第8页 / 共119页
C语言图形编程.docx_第9页
第9页 / 共119页
C语言图形编程.docx_第10页
第10页 / 共119页
C语言图形编程.docx_第11页
第11页 / 共119页
C语言图形编程.docx_第12页
第12页 / 共119页
C语言图形编程.docx_第13页
第13页 / 共119页
C语言图形编程.docx_第14页
第14页 / 共119页
C语言图形编程.docx_第15页
第15页 / 共119页
C语言图形编程.docx_第16页
第16页 / 共119页
C语言图形编程.docx_第17页
第17页 / 共119页
C语言图形编程.docx_第18页
第18页 / 共119页
C语言图形编程.docx_第19页
第19页 / 共119页
C语言图形编程.docx_第20页
第20页 / 共119页
亲,该文档总共119页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

C语言图形编程.docx

《C语言图形编程.docx》由会员分享,可在线阅读,更多相关《C语言图形编程.docx(119页珍藏版)》请在冰点文库上搜索。

C语言图形编程.docx

C语言图形编程

C语言图形编程(一、字符屏幕)   [2006-4-3023:

56:

00]  [作者:

zhihuiluck]

一、屏幕操作函数

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

    在BorlandC++里面提供了字符屏幕和图形函数。

字符屏幕的核心是窗口(Window),它是屏幕的活动部分,字符输出或显示在活动窗口中进行。

窗口在缺省时,就是整个屏幕。

窗口可以根据需要指定其大小。

同样,对图形函数的操作,也提供了(Viewport)。

也就是说图形函数的操作都是在视口上进行。

图形视口与字符窗口具有相同的特性,用户可以在屏幕上定义大小不同的视口,若不定义视口大小,它就是整个屏幕。

    窗口是在字符屏幕下的概念,只有字符才能在窗口中显示出来,这时用户可以访问的最小单位为一个字符。

视口是在图形屏幕状态下的概念,文本与图形都可以在视口上显示,用户可访问的最小单位是一个像素(像素这一术语最初用来指显示器上最小的、单独的发光点单元。

然而现在,其含义拓宽为指图形显示器上的最小可访问点)。

    字符和图形状态下,屏幕上的位置都是由它们的行与列所决定的。

有一点须指出:

字符状态左上角坐标为(1,1),但图形左上角坐标为(0,0)。

    了解字符屏幕和图形函数与窗口和视口的关系是很重要的。

例如,字符屏幕光标位置函数gotoxy()将光标移到窗口的x,y位置上,这未必是相对于整个屏幕。

下面介绍常用的几类字符屏幕函数的功能用途、操作方法及其例行程序。

一、屏幕操作函数

    编写程序绘图经常要用到对字符屏幕进行操作。

例如,在往屏幕上写字符之前,首先要将屏幕清除干净。

又如,有时需要在屏幕上多处写上肉中刺样的字符内容,这时最好用屏幕拷贝来高效率地完成这一任务。

对这些操作,BorlandC++提供了一系列字符屏幕操作函数来实现。

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

功能:

函数clrscr()清除整个当前字符窗口,并且把光标定位于左上角(1,1)处。

用法:

此函数调用方式为voidclrscr(void);

说明:

括号中void表示无参数。

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

返回值:

例:

使用这个函数的例子见4.clreol()函数的实例中。

2.window()字符窗口函数

功能:

函数window()用于在指定位置建立一个字符窗口。

用法:

此函数调用方式为voidwindow(intleft,inttop,intright,intbottom);

说明:

函数中参数left,top为窗口左上角坐标;right,bottom为其右下角坐标。

       若有一个坐标是无效的,则window()函数不起作用。

一旦该函数调用成功,那么所有定位坐标都是相对于窗口的,而不是相对于整个屏幕。

但是建立窗口所用的坐标总是相对整个屏幕的绝对坐标,而不是相对当前窗口的相对坐标。

这样用户就可以根据各种需要建立多个互不嵌套的窗口。

       此函数的头文件为conio.h。

返回值:

例:

调用这个函数的实现例见3.gotoxy()函数的例子中。

3.gotoxy()光标定位函数

功能:

函数gotoxy()将字屏幕上的光标移到当前窗口指定的位置上。

用法:

这个函数调用方式为voidgotoxy(intx,inty);

说明:

括号里x,y是,光标定位的坐标,如果其中一个坐标值无效(如坐标超界),那么光标不会移动。

       此函数在字符状态(有时称为文本状态)下经常用到,其相应的头文件为conio.h

返回值:

例:

下面程序建立两个窗口,然后在窗口里显示字符,字符的位置是调用该函数确定的。

#include"conio.h>

voidborder(intstartx,intstarty,intendx,intendy)

{

   registerinti;

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

{

   voidborder(int,int,int,int);

   clrscr();

   window(6,8,38,12);

   border(6,8,38,12);

   gotoxy(2,2);

   printf("window1");

   window(8,16,40,24);

   border(8,16,40,24);

   gotoxy(3,2);

   printf("window2");

   getch();

}

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

功能:

函数clreol()在当前字符窗口中清除从光标位置到行尾的所有字符,而光标位置保持不变。

用法:

它的调用方式为voidclreol(void);

说明:

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

返回值:

例:

程序中使用了函数clreol()和clrscr()

#include"conio.h>

voidmain()

{

   registerinti;

   gotoxy(6,8);

   printf("Thisisatestoftheclreol()function.");

   getch();

   gotoxy(6,8);

   clreol();

   for(i=0;i<20;i++)

      printf("Hello\n");

   getch();

   clrscr();

}

5.insline()插入空行函数

功能:

函数insline()插入一空行到当前光标所在行上,同时光标以下的所有行都向下顺移一行。

用法:

此函数的调用方式为voidinsline(void);

说明:

该函数只用于文本方式,并且在当了符窗口才有效。

       这个函数的对应头文件是conio.h

返回值:

例:

程序给出了insline()函数的用法。

#include"conio.h"

voidmain()

{

   registserinti;

   clrscr();

   for(i=1;i<24;i++)

   {

      gotoxy(1,i);

      printf("Thisisline%d\n",i);

   }

   getch();

   gotoxy(1,10);

   insline();

   getch();

}

6.delline()删除一行函数

功能:

函数delline()删除当前窗口内光标所在行,同时把该行下面所有行都上移一行。

用法:

此函数调用方式为voiddelline(void);

说明:

注意,如果当前窗口小于整个屏幕,那么该函数只影响到窗口内的字符。

       这个函数相应的头部文件是conio.h

返回值:

例:

先在屏幕上显示16行文字,然后删除第4行

#include"conio.h"

voidmain()

{

   registerinti;

   clrscr();

   for(i=0;i<16;i++)printf("line%d\n",i);

   getch();

   gotoxy(1,4);

   delline();

   getch();

}

7.gettext()拷进文字函数

功能:

函数gettext()用于文本状态下将屏幕上矩形域内的文字拷进内存。

用法:

该函数调用方式为intgettext(intleft,inttop,intright,intbottom,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指向的内存中的文字拷出到屏幕上一个矩形区域中。

用法:

此函数调用方式为intputtext(intleft,inttop,intright,intbottom,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()将屏幕上一个矩形区域的文字移到另一个区域上。

用法:

该函数调用方式为intmovetext(intleft,inttop,intright,intbottom,intnewleft,intnewtop);

说明:

上面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()针屏幕设置为文本模式(或者说字符状态)。

用法:

函数调用方式为voidtextmode(intmode);

说明:

参数mode必须为表1-2中所示的模式之一⑴以用模式名(符号值),也可以用其等价的整数值。

表1-2文本模式

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

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

BW40                        0          40列黑白

C40                        1          40列彩色

BW80                        2          80列黑白

C80                        3          80列彩色

MONO                        7          80列单色

LASTMODE                   -1          上次模式

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

   调用该函数后,屏幕复位,并且所有字符的属性恢复其缺省值。

   此函数对应的头文件是conio.h

返回值:

例:

把屏幕设置为80列彩色模式

   textmode(C80);

二、字符属性函数

   用户可以设置字符显示的高亮度或低亮度的写的符闪烁及其背景颜色等。

具有这些操作的函数称为字符属性函数。

除了仅支持单模式和单色的显示卡外,字符属性函数适用于其余所有的显示卡。

11.highvideo()高亮度函数

功能:

函数highvideo()设置屏幕为高亮度显示。

用法:

此函数调用方式为voidhighvideo(void);

说明:

调用该函数后,写到屏幕上的字符是高亮度的。

此函数只适用于文本模式状态(或说字符屏幕状态)。

   这个函数对应的头文件为conio.h

返回值:

例:

设置屏幕显示为高亮度的。

   highvideo();

12.lowvideo()低亮度函数

功能:

函数lowvideo()设置屏幕为低亮度显示。

用法:

该函数调用方式为voidlowvideo(void);

说明:

调用该函数后,此时写到屏幕上的字符是低亮度的。

这个函数只适用于文本模式状态(或说字符屏幕状态)。

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

返回值:

例:

设置屏幕显示为低亮度的

   lowvideo();

13.normvideo(void);

功能:

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

用法:

这个函数调用方式为voidnormvideo(void);

说明:

调用该函数后,此时写到屏幕上的字符是正常亮度的,该函数只适用于文本模式状态(或说字符状屏幕状态)。

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

返回值:

例:

设置屏幕显示为正常亮度。

   normvideo();

14.textcolor()文本颜色函数

功能:

函数textcolor()设置字符屏幕下文本颜色(或字符颜色),它也可以用于使字符闪烁。

用法:

这个函数调用方式为voidtextcolor(intcolor);

说明:

函数中参数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()用于设置文本属性,即字符背景颜色、字符本身颜色和字符闪烁与否。

用法:

函数调用方式为voidtextattr(intattribute);

说明:

设置字符背景颜色属性字节的最简单方法是,用所选的背景颜色值乘以16再与字符颜色值作按位或(OR)运算。

例如需要红色背景、绿色字符,就设置成RED*16|GREEN,若还要字符闪烁,就把背景颜色值、字符颜色值与闪烁值一起

按位作或运算。

如蓝背景、黄字符且闪烁,就设置成为:

   YELLO|128|BLUE*16

   第0位用于设置字符颜色。

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

返回值:

例:

设置背景为蓝色、字符为红色并且字符闪烁:

   textattr(RED|128|BLUE*16);

16.textbackground()文本背景函数

功能:

函数textbackground()设置字符屏幕下文本背景颜色(或字符背景颜色)。

用法:

此函数调用方式为voidtextbackground(intbcolor);

说明:

参数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()返回当前窗口中光标处横向坐标。

用法:

此函数调用方式为intwherex(void);

说明:

这个函数调用无参数,其对应的头文件是conio.h

返回值:

函数调用成功,返回光标处x坐标值。

例:

调用这个函数的实例见18.wherey()函数的例中。

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

功能:

函数wherey()返回当前窗口中光标处纵向坐标。

用法:

该函数调用方式为intwherey(void);

说明:

此函数调用无参数,其相应的头文件是conio.h

返回值:

函数调用成功,返回光标处y坐标值。

例:

调作函数wherex()与wherey(),返回当前光标处x坐标与y坐标,并赋给整型变量xpos,ypos。

   intxpos,ypos;

   xpos=wherex();

   ypos=wherey();

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

功能:

函数gettextinfo()获取当前文本窗口信息,并存放在实参结构中。

用法:

函数调用方式为voidgettextinfo(structtext-info*info);

说明:

函数中参数info为structtext-info结构型指针,structtext-info结构在此函数相应的头文件中定义为:

   structtext-info{

      unsignedcharwinleft;         //窗口左上角x坐标

      unsignedcharwintop;          //窗口左上角y坐标

      unsignedcharwinright;        //窗口右下角x坐标

      unsignedcharwinbottom;       //窗口右下角y

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 法律文书 > 调解书

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2