C语言函数表格技巧和男生 c语言execlp函数( 六 )


左上角(0,0)作为坐标原点, 而且可为通过设置使窗口之外的区域为不可接触 。
这样, 所有的图形操作就被限定在窗口内进行 。
void far setviewport(int xl,int yl,int x2, int y2,int clipflag);
设定一个以(xl,yl)象元点为左上角, (x2,y2)象元为右下角的图形窗口, 其
中x1,y1,x2,y2是相对于整个屏幕的坐标 。若clipflag为非0, 则设定的图形以外
部分不可接触, 若clipflag为0, 则图形窗口以外可以接触 。
void far clearviewport(void);
清除现行图形窗口的内容 。
void far getviewsettings(struct viewporttype far * viewport);
获得关于现行窗口的信息,并将其存于viewporttype定义的结构变量viewport
中, 其中viewporttype的结构说明如下:
struct viewporttype{
int left, top, right, bottom;
int cliplag;
};
二、屏幕操作
除了清屏函数以外, 关于屏幕操作还有以下函数:
void far setactivepage(int pagenum);
void far setvisualpage(int pagenum);
这两个函数只用于EGA,VGA 以及HERCULES图形适配器 。setctivepage() 函数
是为图形输出选择激活页 。所谓激活页是指后续图形的输出被写到函数选定的
pagenum页面, 该页面并不一定可见 。setvisualpage()函数才使pagenum 所指定
的页面变成可见页 。页面从0开始(Turbo C默认页) 。如果先用setactivepage()
函数在不同页面上画出一幅幅图像,再用setvisualpage()函数交替显示, 就可以
实现一些动画的效果 。
void far getimage(int xl,int yl, int x2,int y2, void far *mapbuf);
void far putimge(int x,int,y,void * mapbuf, int op);
unsined far imagesize(int xl,int yl,int x2,int y2);
这三个函数用于将屏幕上的图像复制到内存,然后再将内存中的图像送回到
屏幕上 。首先通过函数imagesize()测试要保存左上角为(xl,yl), 右上角为(x2,
y2)的图形屏幕区域内的全部内容需多少个字节, 然后再给mapbuf 分配一个所测
数字节内存空间的指针 。通过调用getimage()函数就可将该区域内的图像保存在
内存中, 需要时可用putimage()函数将该图像输出到左上角为点(x, y)的位置上,
其中getimage()函数中的参数op规定如何释放内存中图像 。
对于imagesize()函数, 只能返回字节数小于64K字节的图像区域, 否则将会
出错, 出错时返回-1 。
本节介绍的函数在图像动画处理、菜单设计技巧中非常有用 。
例13:下面程序模拟两个小球动态碰撞过程 。
7. 图形模式下的文本输出
在图形模式下, 只能用标准输出函数, 如printf(), puts(), putchar() 函
数输出文本到屏幕 。除此之外, 其它输出函数(如窗口输出函数)不能使用, 即是
可以输出的标准函数, 也只以前景色为白色, 按80列, 25行的文本方式输出 。
Turbo C2.0也提供了一些专门用于在图形显示模式下的文本输出函数 。下面
将分别进行介绍 。
一、文本输出函数
void far outtext(char far *textstring);
该函数输出字符串指针textstring所指的文本在现行位置 。
void far outtextxy(int x, int y, char far *textstring);
该函数输出字符串指针textstring所指的文本在规定的(x, y)位置 。其中x
和y为象元坐标 。
说明:
这两个函数都是输出字符串, 但经常会遇到输出数值或其它类型的数据,
此时就必须使用格式化输出函数sprintf() 。
sprintf()函数的调用格式为:
int sprintf(char *str, char *format, variable-list);
它与printf()函数不同之处是将按格式化规定的内容写入str 指向的字符串
中, 返回值等于写入的字符个数 。
例如:
sprintf(s, "your TOEFL score is %d", mark);

推荐阅读