C 语言图形编程.pdf





《C 语言图形编程.pdf》由会员分享,可在线阅读,更多相关《C 语言图形编程.pdf(75页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、C 语 言 图 形 编 程(一、字 符 屏 幕)日 期:2004-12-25作 者:未 知 来 源:未 知 一、屏 幕 操 作 函 数 1.clrscr。清 除 字 符 窗 口 函 数 2.window。字 符 窗 口 函 数 3.gotoxy。光 标 定 位 函 数 4.clre o l()清 除 光 标 行 尾 字 符 函 数 5.insline()插 入 空 行 函 数 6.delline()删 除 一 行 函 数 7.g e tte xt()拷 进 文 字 函 数 8.putte xt()拷 出 文 字 函 数 9.movetext()移 动 文 字 函 数 二、字 符 属 性 函 数
2、 10.textm ode()文 本 模 式 函 数 11.highvideo()高 亮 度 函 数 12.Iowvideo()低 亮 度 函 数 13.normvideo(void);14.textcolor()文 本 颜 色 函 数 15.te x ta ttr()文 本 属 性 函 数 16.textbackground()文 本 背 景 函 数 三、屏 显 状 态 函 数 17.w herex()光 标 处 x 坐 标 函 数 18.w herey()光 标 处 y 坐 标 函 数 19.gettextinfo()获 取 文 本 窗 口 信 息 函 数 在 Borland 6+里 面
3、提 供 了 字 符 屏 幕 和 图 形 函 数。字 符 屏 幕 的 核 心 是 窗 口(W indow),它 是 屏 幕 的 活 动 部 分,字 符 输 出 或 显 示 在 活 动 窗 口 中 进 行。窗 口 在 缺 省 时,就 是 整 个 屏 幕。窗 口 可 以 根 据 需 要 指 定 其 大 小。同 样,对 图 形 函 数 的 操 作,也 提 供 了(Viewport)。也 就 是 说 图 形 函 数 的 操 作 都 是 在 视 口 上 进 行。图 形 视 口 与 字 符 窗 口 具 有 相 同 的 特 性,用 户 可 以 在 屏 幕 上 定 义 大 小 不 同 的 视 口,若 不 定 义
4、 视 口 大 小,它 就 是 整 个 屏 幕。窗 口 是 在 字 符 屏 幕 下 的 概 念,只 有 字 符 才 能 在 窗 口 中 显 示 出 来,这 时 用 户 可 以 访 问 的 最 小单 位 为 一 个 字 符。视 口 是 在 图 形 屏 幕 状 态 下 的 概 念,文 本 与 图 形 都 可 以 在 视 口 上 显 示,用 户 可 访 问 的 最 小 单 位 是 一 个 像 素(像 素 这 一 术 语 最 初 用 来 指 显 示 器 上 最 小 的、单 独 的 发 光 点 单 元。然 而 现 在,其 含 义 拓 宽 为 指 图 形 显 示 器 上 的 最 小 可 访 问 点)。字 符
5、 和 图 形 状 态 下,屏 幕 上 的 位 置 都 是 由 它 们 的 行 与 列 所 决 定 的。有 一 点 须 指 出:字 符 状 态 左 上 角 坐 标 为(1,1),但 图 形 左 上 角 坐 标 为(0,0)。了 解 字 符 屏 幕 和 图 形 函 数 与 窗 口 和 视 口 的 关 系 是 很 重 要 的。例 如,字 符 屏 幕 光 标 位 置 函 数 gotoxy()将 光 标 移 到 窗 口 的 x,y位 置 上,这 未 必 是 相 对 于 整 个 屏 幕。下 面 介 绍 常 用 的 几 类 字 符 屏 幕 函 数 的 功 能 用 途、操 作 方 法 及 其 例 行 程 序。
6、一、屏 幕 操 作 函 数 编 写 程 序 绘 图 经 常 要 用 到 对 字 符 屏 幕 进 行 操 作。例 如,在 往 屏 幕 上 写 字 符 之 前,首 先 要 将 屏 幕 清 除 干 净。又 如,有 时 需 要 在 屏 幕 上 多 处 写 上 肉 中 刺 样 的 字 符 内 容,这 时 最 好 用 屏 幕 拷 贝 来 高 效 率 地 完 成 这 一 任 务。对 这 些 操 作,Borland 6+提 供 了 一 系 列 字 符 屏 幕 操 作 函 数 来 实 现。1.clrscr()清 除 字 符 窗 口 函 数 功 能:函 数 clrscr。清 除 整 个 当 前 字 符 窗 口,并
7、 且 把 光 标 定 位 于 左 上 角(1,1)处。用 法:此 函 数 调 用 方 式 为 void clrscr(void);说 明:括 号 中 v o id表 示 无 参 数。该 函 数 相 应 的 头 文 件 为 conio.h返 回 值:无 例:使 用 这 个 函 数 的 例 子 见 4.clreol()函 数 的 实 例 中。2.window。字 符 窗 口 函 数 功 能:函 数 window。用 于 在 指 定 位 置 建 立 一 个 字 符 窗 口。用 法:此 函 数 调 用 方 式 为 void window(int leftjnt top,int right,int bo
8、ttom);说 明:函 数 中 参 数 left,top为 窗 口 左 上 角 坐 标;right,bottom为 其 右 下 角 坐 标。若 有 一 个 坐 标 是 无 效 的,则 window。函 数 不 起 作 用。一 旦 该 函 数 调 用 成 功,那 么 所 有 定 位 坐 标 都 是 相 对 于 窗 口 的,而 不 是 相 对 于 整 个 屏 幕。但 是 建 立 窗 口 所 用 的 坐 标 总 是 相 对 整 个 屏 幕 的 绝 对 坐 标,而 不 是 相 对 当 前 窗 口 的 相 对 坐 标。这 样 用 户 就 可 以 根 据 各 种 需 要 建 立 多 个 互 不 嵌 套 的
9、 窗 口。此 函 数 的 头 文 件 为 conio.h0返 回 值:无 例:调 用 这 个 函 数 的 实 现 例 见 3.gotoxy()函 数 的 例 子 中。3.gotoxy()光 标 定 位 函 数 功 能:函 数 gotoxy()将 字 屏 幕 上 的 光 标 移 到 当 前 窗 口 指 定 的 位 置 上。用 法:这 个 函 数 调 用 方 式 为 void gotoxy(int x,int y);说 明:括 号 里 x,y是,光 标 定 位 的 坐 标,如 果 其 中 一 个 坐 标 值 无 效(如 坐 标 超 界),那 么 光 标 不 会 移 动。此 函 数 在 字 符 状
10、态(有 时 称 为 文 本 状 态)下 经 常 用 到,其 相 应 的 头 文 件 为 conio.h返 回 值:无 例:下 面 程 序 建 立 两 个 窗 口,然 后 在 窗 口 里 显 示 字 符,字 符 的 位 置 是 调 用 该 函 数 确 定 的。#include conio.hvoid border(int startx.int starty.int endxjnt endy)(register int i;gotoxy(1,1);for(i=0;i=endx-startx;i+)putch(-);gotoxy(1,endy-starty);for(i=0;i=endx-start
11、x;i+)putch(-);for(i=2;i=endy-starty;i+)gotoxy(1,i);putch(l);gotoxy(endx-startx+1,i);putch(l);)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.clre o l()清 除 光 标
12、行 尾 字 符 函 数 功 能:函 数 clreol。在 当 前 字 符 窗 口 中 清 除 从 光 标 位 置 到 行 尾 的 所 有 字 符,而 光 标 位 置 保 持 不 变。用 法:它 的 调 用 方 式 为 void clreol(void);说 明:此 函 数 的 相 应 头 文 件 为 conio.h返 回 值:无 例:程 序 中 使 用 了 函 数 clreol()和 clrscr()#include conio.hvoid main()(register int i;gotoxy(6,8);printf(This is a test of the clreol()functi
13、on.);getch();gotoxy(6,8);clreol();for(i=0;i20;i+)printf(Hellon);getch();clrscr();)5.insline()插 入 空 行 函 数 功 能:函 数 insline()插 入 一 空 行 到 当 前 光 标 所 在 行 上,同 时 光 标 以 下 的 所 有 行 都 向 下 顺 移 一 行。用 法:此 函 数 的 调 用 方 式 为 void insline(void);说 明:该 函 数 只 用 于 文 本 方 式,并 且 在 当 了 符 窗 口 才 有 效。这 个 函 数 的 对 应 头 文 件 是 conio.h
14、返 回 值:无例:程 序 给 出 了 insline()函 数 的 用 法。#include conio.h*void main()(registser int i;clrscr();for(i=1;i24;i+)(gotoxy(1,i);printf(This is line%dn,i);)getch();got oxy(1,10);insline();getch();)6.delline()删 除 一 行 函 数 功 能:函 数 delline()删 除 当 前 窗 口 内 光 标 所 在 行,同 时 把 该 行 下 面 所 有 行 都 上 移 一 行。用 法:此 函 数 调 用 方 式
15、为 void delline(void);说 明:注 意,如 果 当 前 窗 口 小 于 整 个 屏 幕,那 么 该 函 数 只 影 响 到 窗 口 内 的 字 符。这 个 函 数 相 应 的 头 部 文 件 是 conio.h返 回 值:无 例:先 在 屏 幕 上 显 示 1 6行 文 字,然 后 删 除 第 4 行#include conio.hvoid main()(register int i;clrscr();for(i=0;i16;i+)printf(line%dn,i);getch();gotoxy(1,4);delline();getch();7.g e tte xt()拷 进
16、 文 字 函 数 功 能:函 数 gettext()用 于 文 本 状 态 下 将 屏 幕 上 矩 形 域 内 的 文 字 拷 进 内 存。用 法:该 函 数 调 用 方 式 为 int gettext(int leftjnt topjnt right,int bottom,void*buffer);说 明:函 数 中 参 数 left,top为 矩 形 区 域 的 左 上 角 坐 标,right,bottom为 其 右 下 角 坐 标,这 些 坐 标 是 屏 幕 的 绝 对 坐 标,不 是 窗 口 的 相 对 坐 标。buffer指 针 必 须 指 向 一 个 足 够 保 存 该 矩 形 域
17、 内 文 字 的 内 存。所 用 内 存 大 小 按 下 式 计 算:点 头 用 字 节 数=矩 形 战 内 的 行 数 x 矩 形 域 的 列 数 x 2这 里 将 行 数 乘 以 列 数 再 乘 以 2 的 原 因 是 保 存 屏 幕 上 每 个 字 符 要 用 两 个 字 节 存 储 单 元,一 个 字 节 存 储 单 元 存 放 字 符 本 身,而 另 一 个 存 放 其 属 性。此 函 数 相 应 的 头 文 件 是 con io.h返 回 值:若 函 数 调 用 成 功 则 返 回 1,否 则 返 顺 0。例:把 屏 幕 左 上 角 点(1,1)和 右 下 角 点(10,10)的
18、区 域 拷 贝 到 b u f指 向 的 内 存 中 去。buf=(char*)malloc(10*10*2);if(!buf)gettext(1,1,10,10,buf);8.p u tte xt()拷 出 文 字 函 数 功 能:函 数 puttext()把 先 前 由 gettext。保 存 到 buffer指 向 的 内 存 中 的 文 字 拷 出 到 屏 幕 上 一 个 矩 形 区 域 中。用 法:此 函 数 调 用 方 式 为 int putt ext(int leftjnt topjnt right,int bottom,void*buffer);说 明:函 数 里 left,t
19、op为 给 出 的 屏 幕 上 矩 形 区 域 的 左 上 角 点,right,bottom为 其 右 下 角 点,其 坐 标 是 用 屏 幕 的 绝 对 坐 标,而 不 是 用 窗 口 的 相 对 坐 标。该 函 数 相 应 的 头 文 件 为 conio.h返 回 值:函 数 调 用 成 功 返 回 值 为 1,否 则 返 回 0。例:屏 幕 上 某 个 区 域 内 容 拷 进 b u f指 向 的 内 存 中,然 后 又 将 这 些 文 字 拷 出 到 屏 幕 上 新 位 置。buf=(char*)malloc(10*10*2);gettext(1,1,10,10,buf);puttex
20、t(16,16,30,30,buf);9.m ovetext()移 动 文 字 函 数 功 能:函 数 movetext。将 屏 幕 上 一 个 矩 形 区 域 的 文 字 移 到 另 一 个 区 域 上。用 法:该 函 数 调 用 方 式 为 int movetext(int leftjnt topjnt right,int bottom,int newleftjntnewt op);说 明:上 面 left,top为 矩 形 区 域 上 角 坐 标,right,bottom为 其 右 下 角 坐 标,newleft,newright为 移 动 到 区 域 左 上 角 坐 标。这 些 坐 标
21、 是 屏 幕 的 绝 对 坐 标,不 是 窗 口 的 相 对 坐 标。若 要 把 屏 幕 上 一 段 文 字 移 到 屏 幕 的 另 一 位 置,那 么 使 用 movetext()函 数 比 用 gettext()然 后 再 用 puttext。效 率 更 高。此 函 数 相 应 的 头 文 件 是 conio.h返 回 值:如 果 有 一 个 以 上 坐 标 无 效,那 么 函 数 返 回 值 为 0,否 则 返 回 1。列:把 屏 幕 左 上 角 点(8,8),右 下 角 点(20,20)的 矩 形 区 域 文 字 移 动 到 左 上 角 点(10,10)的 位 置 上:movetext
22、(8,8,20,20,10,10);10.textm ode()文 本 模 式 函 数 功 能:函 数 textmode。针 屏 幕 设 置 为 文 本 模 式(或 者 说 字 符 状 态)。用 法:函 数 调 用 方 式 为 void textmode(int mode);说 明:参 数 mode必 须 为 表 1-2中 所 示 的 模 式 之 一 以 用 模 式 名(符 号 值),也 可 以 用 其 等 价 的 整 数 值。表 1-2文 本 模 式 模 式 名(符 号 值)等 价 整 数 值 说 明 BW40 0 4 0列 黑 白 C40 1 4 0列 彩 色 BW80 2 8 0列 黑
23、白 C80 3 8 0列 彩 色 MONO 7 8 0列 单 色 LASTMODE-1 上 次 模 式 调 用 该 函 数 后,屏 幕 复 位,并 且 所 有 字 符 的 属 性 恢 复 其 缺 省 值。此 函 数 对 应 的 头 文 件 是 conio.h返 回 值:无 例:把 屏 幕 设 置 为 8 0列 彩 色 模 式 textmode(C80);二、字 符 属 性 函 数 用 户 可 以 设 置 字 符 显 示 的 高 亮 度 或 低 亮 度 的 写 的 符 闪 烁 及 其 背 景 颜 色 等。具 有 这 些 操 作 的 函数 称 为 字 符 属 性 函 数。除 了 仅 支 持 单 模
24、 式 和 单 色 的 显 示 卡 外,字 符 属 性 函 数 适 用 于 其 余 所 有 的 显 示 卡。11.highvideo。高 亮 度 函 数 功 能:函 数 highvideo。设 置 屏 幕 为 高 亮 度 显 示。用 法:此 函 数 调 用 方 式 为 void highvideo(void);说 明:调 用 该 函 数 后,写 到 屏 幕 上 的 字 符 是 高 亮 度 的。此 函 数 只 适 用 于 文 本 模 式 状 态(或 说 字 符 屏 幕 状 态)。这 个 函 数 对 应 的 头 文 件 为 conio.h返 回 值:无 例:设 置 屏 幕 显 示 为 高 亮 度 的
25、。highvideo();12.Iowvideo()低 亮 度 函 数 功 能:函 数 lowvideo。设 置 屏 幕 为 低 亮 度 显 示。用 法:该 函 数 调 用 方 式 为 void lowvideo(void);说 明:调 用 该 函 数 后,此 时 写 到 屏 幕 上 的 字 符 是 低 亮 度 的。这 个 函 数 只 适 用 于 文 本 模 式 状 态(或 说 字 符 屏 幕 状 态)。此 函 数 相 应 的 头 文 件 是 conio.h返 回 值:无 例:设 置 屏 幕 显 示 为 低 亮 度 的 lowvideo();13.normvideo(void);功 能:函 数
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言图形编程 语言 图形 编程

限制150内