77范文网 - 专业文章范例文档资料分享平台

C语言项目实践指导书(图形程序设计)(2)

来源:网络收集 时间:2019-04-01 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

int gdriver, gmode;

detectgraph(&gdriver, &gmode);/*自动测试硬件*/

printf(\输出测试结果*/ getch();

initgraph(&gdriver, &gmode, \根据测试结果初始化图形*/ bar3d(10, 10, 130, 250, 20, 1); getch(); closegraph(); return 0; }

上例程序中先对图形显示器自动检测,然后再用图形初始化函数进行初始化设置,但Turbo C提供了一种更简单的方法,即用gdriver= DETECT语句后再跟initgraph()函数就行了。采用这种方法后, 上例可改为:

例1.3:

#include int main() {

int gdriver=DETECT, gmode; initgraph(&gdriver, &gmode, \ bar3d(50, 50, 150, 30, 1); getch(); closegraph(); return 0; }

另外,Turbo C提供了退出图形状态的函数closegraph(), 其调用格式为: void far closegraph(void);

调用该函数后可退出图形状态而进入文本方式(Turbo C 默认方式),并释放用于保存图形驱动程序和字体的系统内存。

- 5 -

程序练习1.1:编辑例1.3程序,存为.c文件,在TC环境下编译、调试、运行,运行结果如图1.1所示。

图1.1初始化图形程序运行结果截图

问题1.1:写出初始化图形程序的必要步骤。

问题1.2:关于图形程序的初始化,你遇到的问题和解决方法是什么?

问题1.3:修改代码snake.c,进行代码规范性练习。 修改后规范的代码:

2独立图形运行程序的建立

Turbo C对于用initgraph()函数直接进行的图形初始化程序,在编译和链接时并没有将相应的驱动程序(*.BGI)装入到执行程序,当程序进行到intitgraph()语句时,再从该函数中第三个形式参数char *path中所规定的路径中去找相应的驱动程序。若没有驱动程序,则在C:\\TC中去找, 如C:\\TC中仍没有或TC不存在,将会出现错误:

BGI Error: Graphics not initialized (use 'initgraph')

因此,为了使用方便, 应该建立一个不需要驱动程序就能独立运行的可执行图形程序,Turbo C中规定用下述步骤(这里以EGA、VGA显示器为例):

(1)在C:\\TC子目录下输入命令:BGIOBJ EGAVGA

此命令将驱动程序EGAVGA.BGI转换成EGAVGA.OBJ的目标文件。 (2)在C:\\TC子目录下输入命令:TLIB LIB\\GRAPHICS.LIB+EGAVGA 此命令的意思是将EGAVGA.OBJ的目标模块装到GRAPHICS.LIB库文件中。 (3)在程序中initgraph()函数调用之前加上一句:

- 6 -

registerbgidriver(EGAVGA_driver) ;

该函数告诉连接程序在连接时把EGAVGA的驱动程序装入到用户的执行程序中。

经过上面处理,编译链接后的执行程序可在任何目录或其它兼容机上运行。 假设已作了前两个步骤,若再向例3中加 registerbgidriver()函数则变成: 例2.1:

#include #include int main() {

int gdriver=DETECT,gmode;

registerbgidriver(EGAVGA_driver) ;/ *建立独立图形运行程序 */ initgraph( gdriver, gmode,\ bar3d(50,50,250,150,20,1); getch(); closegraph(); return 0; }

上例编译链接后产生的执行程序可独立运行。

如不初始化成EGA或CGA分辨率,而想初始化为CGA分辨率,则只需要将上述步骤中有EGAVGA的地方用CGA代替即可。

3屏幕颜色的设置和清屏函数(4学时)

对于图形模式的屏幕颜色设置,同样分为背景色的设置和前景色的设置。在Turbo C中分别用下面两个函数。

设置背景色:void far setbkcolor( int color); 设置作图色:void far setcolor(int color);

其中color 为图形方式下颜色的规定数值,对EGA, VGA显示器适配器,有关颜色的符号常数及数值如表3.1所示。

- 7 -

表3.1 有关屏幕颜色的符号常数表

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

符号常数

数值

含义

符号常数

数值

含义

───────────────────────────────────────────────────────────

BLACK BLUE

GREEN CYAN RED

0 1

黑色 兰色 绿色 青色 红色 洋红 棕色 淡灰

DARKGRAY

8

深灰 深兰 淡绿 淡青 淡红 淡洋红 黄色 白色

LIGHTBLUE LIGHTGREEN LIGHTCYAN LIGHTRED

9 10 11 12

2 3 4 5 6

MAGENTA BROWN

LIGHTMAGENTA YELLOW WHITE

13 14 15

LIGHTGRAY 7

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

对于CGA适配器,背景色可以为表3中16种颜色的一种,但前景色依赖于不同的调色板。共有四种调色板,每种调色板上有四种颜色可供选择。不同调色板所对应的原色见表3.2。

表3.2 CGA调色板与颜色值表

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

调色板

颜色值

───────────────── ───────────────────────── 符号常数

数值

0

1

2

3

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ C0

C1 C2 C3

0 1 2 3

背景 背景 背景 背景

绿 青

黄 白 黄 白

洋红 淡红 淡洋红

淡绿 淡青

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

清除图形屏幕内容使用清屏函数,其调用格式如下: voidfar cleardevice(void);

有关颜色设置、清屏函数的使用请看例5。 例3.1:

#include

#include int main() {

int gdriver, gmode, i;

- 8 -

gdriver=DETECT;

registerbgidriver(EGAVGA_DRIVER);/*建立独立图形运行程序*/ initgraph(&gdriver, &gmode, \图形初始化*/ setbkcolor(0); /*设置图形背景*/ cleardevice(); for(i=0; i<=15; i++) {

setcolor(i); /*设置不同作图色*/

circle(320, 240, 20+i*10);/*画半径不同的圆*/ delay(100);/*延迟100毫秒*/ }

for(i=0; i<=15; i++) {

setbkcolor(i);/*设置不同背景色*/ cleardevice();

circle(320, 240, 20+i*10); delay(100); }

closegraph(); return 0; }

另外,Turbo C也提供了几个获得现行颜色设置情况的函数。 int far getbkcolor(void); 返回现行背景颜色值。 int far getcolor(void); 返回现行作图颜色值。 int far getmaxcolor(void); 返回最高可用的颜色值。

程序练习3.1:编辑例3.1程序,存为.c文件,在TC环境下编译、调试、运行,运行结果如图3.1 – 3.2所示。

图3.1 屏幕颜色设置与清屏程序运行结果截图1

- 9 -

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库C语言项目实践指导书(图形程序设计)(2)在线全文阅读。

C语言项目实践指导书(图形程序设计)(2).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/560899.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: