没有合适的资源?快使用搜索试试~ 我知道了~
首页关于C语言图形界面编程
资源详情
资源推荐
![](https://csdnimg.cn/release/download_crawler_static/2793286/bg1.jpg)
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 位置上,这未必是相对于整个屏幕。下面介绍常用的几类
字符屏幕函数的功能用途、操作方法及其例行程序。
![](https://csdnimg.cn/release/download_crawler_static/2793286/bg2.jpg)
一、屏幕操作函数
编写程序绘图经常要用到对字符屏幕进行操作。例如,在往屏幕上写字符之前,首先要
将屏幕清除干净。又如,有时需要在屏幕上多处写上肉中刺样的字符内容,这时最好用屏
幕拷贝来高效率地完成这一任务。对这些操作,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('-');
![](https://csdnimg.cn/release/download_crawler_static/2793286/bg3.jpg)
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\n");
getch();
clrscr();
}
![](https://csdnimg.cn/release/download_crawler_static/2793286/bg4.jpg)
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();
}
![](https://csdnimg.cn/release/download_crawler_static/2793286/bg5.jpg)
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()针屏幕设置为文本模式(或者说字符状态)。
剩余26页未读,继续阅读
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://profile-avatar.csdnimg.cn/ef078177d51f43809648485d0d1b3cc9_wxlove3.jpg!1)
wxlove3
- 粉丝: 0
- 资源: 13
上传资源 快速赚钱
我的内容管理 收起
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![](https://csdnimg.cn/release/wenkucmsfe/public/img/voice.245cc511.png)
会员权益专享
最新资源
- VMP技术解析:Handle块优化与壳模板初始化
- C++ Primer 第四版更新:现代编程风格与标准库
- 计算机系统基础实验:缓冲区溢出攻击(Lab3)
- 中国结算网上业务平台:证券登记操作详解与常见问题
- FPGA驱动的五子棋博弈系统:加速与创新娱乐体验
- 多旋翼飞行器定点位置控制器设计实验
- 基于流量预测与潮汐效应的动态载频优化策略
- SQL练习:查询分析与高级操作
- 海底数据中心散热优化:从MATLAB到动态模拟
- 移动应用作业:MyDiaryBook - Google Material Design 日记APP
- Linux提权技术详解:从内核漏洞到Sudo配置错误
- 93分钟快速入门 LaTeX:从入门到实践
- 5G测试新挑战与罗德与施瓦茨解决方案
- EAS系统性能优化与故障诊断指南
- Java并发编程:JUC核心概念解析与应用
- 数据结构实验报告:基于不同存储结构的线性表和树实现
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
![](https://img-home.csdnimg.cn/images/20220527035711.png)
![](https://img-home.csdnimg.cn/images/20220527035711.png)
![](https://img-home.csdnimg.cn/images/20220527035111.png)
安全验证
文档复制为VIP权益,开通VIP直接复制
![](https://csdnimg.cn/release/wenkucmsfe/public/img/green-success.6a4acb44.png)