TC图形函数详解第二节独立图形运行程序的建立

合集下载

tu9

tu9


2、实用绘图程序实例
{ int i; float x0,y0,r; x0=50;y0=50; r=100; ff=fopen(“ss1.dxf”,”w”); hsec(); for (i=1;i<=5000;i=i+1) { r=r+50; ccircle(x0,y0,r,2); } endsec(); } /*定义变量*/ /*定义圆心坐标*/ /* 打开指定的文件*/ /*写入段头 */ /*半径累加*/ /*循环内画圆*/ /*写入段尾 */
写上段头 调用绘图函数绘图 写上段尾
2、实用绘图程序实例


有了C语言DXF文件接口图形库,对实用绘 图程序设计就简洁多了。 例如编一个接口程序,在R2000中画5000 个同心圆,程序如下:
#include<stdio.h> #include<math.h> 嵌入头函数 #include<graphics.h> #include”txk.c” 嵌入DXF图形库 FILE *ff; 定义文件指针 main( )
第二节 C接口程序DXF文件图形库
在C程序运行中生成DXF文件,为了程序设计的方便,可 以先编制DXF文件的子图,这些子图合起来形成DXF 文件图形库,供主程序调用. DXF文件图形库内容如下:
1、hsec( )
段头函数
2、endsec( ) 段尾函数 3、cpoint(x,y) 画点函数
4、cline(x1,y1,x2,y2,k) 画线函数
第二节 C接口程序DXF文件图形库
11、hztext(x,y,x1,y1,h,d,ch,m,n) 汉字标注函数,第一点坐标x,y,第二点坐标x1,y1,高度h, 转角d,汉字ch是汉字内容,n为符号个数,m的含义如下:

行星齿轮传动参数化绘图的研究

行星齿轮传动参数化绘图的研究

() a
图 1 双级 N W 型行 星 齿轮传 动 G
绘 制 过程 如下 :
图 2 齿轮 零件截 面 图参数 化模 型
( ) 数处 理 1参 ① 数 据文件 建立 和读 取 。获取参 数是 实 现参数化 绘 图的第 一 步 , 渐 开 线标 准 直 齿 圆柱 齿 轮 的齿 将 数 、 模数 m、 齿宽 b 轴径 d 齿 轮 的齿 型倒 角 k轮 毂深 度 t等参 数放 人一 个数 据文 件 , 程序 自动 查找 , 、 、 、 让 并把 数据 取 出来 , 简单方 便 , 既 又不 容易 出错 。数据 文件 (er.a) 内容 见表 1 ga1dt的 。
; 据文件表头字段的处理 数
; 取 纪 录 读
(eqz(t sbtf 11 ) ) st a f(us 0 ) o r
; 取第 1 读 个数据
; 取第 6个 数 据 读 ; 闭文 件 关
(eqt ao (u s f5 0 ) st l(tf sbt 11 ) ) r (l e ) C S O f
例、 图层 、 寸标 注样式 、 体样式 、 图设置 等 。用 Vsa Ls 尺 字 草 i li u p语言程 序 编程如 下 :
( e nw l() df c u ; 程序开始 ; 绘图初始化模块
(o ad”ii ” (i )(i 2 9 ) ; cmm n l t 1t 0 1 t 027 ) 图幅 初 设 ms s0 s4
收 稿 日期 :0 20 —3 2 1-41
基金项 目: 黑龙江省 自然科学基金 资助项 目( 20 1 ) 佳木斯大学校管课题 ( 20 .2 ) E 0 92 ; L 0 910 作者简 介: 李宪芝( 90 ) 女 , 17 一 , 山东省高密市人 , 佳木斯大学副教授 , 工学硕士 , 主要研究方 向为传动机械学 。

用c语言读取并显示bmp图像1

用c语言读取并显示bmp图像1

如何在WIN-TC中或TC++3.0中把一张BMP格式的图片显示出来?下面的是<<C & C++编程实例>>随书光盘上的代码,我在TC2.0下编译通过.它是利用了抖动技术显示了8bit和24bit的位图(也就是256色和16M色位图),应该能满足你的需要.不过,我想问下,你老师教过抖动显示吗?#include <stdio.h>#include <dos.h>#include <stdio.h>#include <conio.h>#define NoError 0#define ErrorFileOpen 1#define ErrorFileType 2#define ErrorImageColor 3typedef struct tagBITMAPFILEHEADER{unsigned int bfType;unsigned long bfSize;unsigned int bfReserved1;unsigned int bfReserved2;unsigned long bfoffBits;}BITMAPFILEHEADER;typedef struct tagBITMAPINFOHEADER{unsigned long biSize;unsigned long biWidth;unsigned long biHeight;unsigned int biPlanes;unsigned int biBitCount;unsigned long biCompression;unsigned long biSizeImage;unsigned long biXPelsPerMeter;unsigned long biYPelsPerMeter;unsigned long biClrUsed;unsigned long biClrImportant;} BITMAPINFOHEADER;typedef struct tagRGBQUAD{unsigned char rgbBlue;unsigned char rgbGreen;unsigned char rgbRed;unsigned char rgbReserved;} RGBQUAD;unsigned char PalReg[17]= { 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,0}; unsigned char StandardPal[48]= {0, 0, 0, 32, 0, 0, 0,32, 0, 32,32, 0, 0, 0,32, 32, 0,32, 0,32,32, 32,32, 32, 48, 48,48, 63, 0, 0, 0,63, 0, 63,63, 0, 0, 0,63, 63, 0,63, 0,63,63, 63,63,63, };unsigned char LightnessMatrix [16][16]= {{ 0,235,59,219,15,231,55,215,2,232,56,217,12,229,52,213},{128,64,187,123,143,79,183,119,130,66,184,120,140,76,180,116},{33,192,16,251,47,207,31,247,34,194,18,248,44,204,28,244},{161,97,144,80,175,111,159,95,162,98,146,82,172,108,156,92},{8,225,48,208,5,239,63,223,10,226,50,210,6,236,60,220},{136,72,176,112,133,69,191,127,138,74,178,114,134,70,188,124},{41,200,24,240,36,197,20,255,42,202,26,242,38,198,22,252},{169,105,152,88,164,100,148,84,170,106,154,90,166,102,150,86},{3,233,57,216,13,228,53,212,1,234,58,218,14,230,54,214},{131,67,185,121,141,77,181,117,129,65,186,122,142,78,182,118},{35,195,19,249,45,205,29,245,32,193,17,250,46,206,30,246},{163,99,147,83,173,109,157,93,160,96,145,81,174,110,158,94},{11,227,51,211,7,237,61,221,9,224,49,209,4,238,62,222},{139,75,179,115,135,71,189,125,137,73,177,113,132,68,190,126},{43,203,27,243,39,199,23,253,40,201,25,241,37,196,21,254},{171,107,155,91,167,103,151,87,168,104,153,89,165,101,149,85},};unsigned char ColorTable[2][2][2]= {{{0,12},{10,14}},{{9,13},{11,15}}}; unsigned char ColorMap[256][3];int ShowBmp(char *FileName);int GetColor(unsigned char R,unsigned char G, unsigned char B,int X,int Y); void SetVideoMode(unsigned char Mode);void SetPalReg(unsigned char *palReg);void SetDacReg(unsigned char *DacReg, int Color, int Count);void PutPixel(int X, int Y, unsigned char Color);/* 主函数*/void main (int argc, char *argv[]){if(argc!=2){printf("Usage:\tSHOW Filename.BMP\n");exit(1);}ShowBmp(argv[1]);}/* 根据图像文件名,读取图像内容并利用抖动技术进行显示*/ int ShowBmp(char *FileName){FILE *Fp;BITMAPFILEHEADER FileHead;BITMAPINFOHEADER InfoHead;RGBQUAD RGB;int N, W,Y,X,C,Color;unsigned char Buffer[4096];Fp=fopen(FileName,"rb");if (Fp==NULL)return(ErrorFileOpen);fread(&FileHead,sizeof(BITMAPFILEHEADER),1,Fp);if(FileHead.bfType!='BM'){fclose(Fp);return(ErrorFileType);}fread(&InfoHead,sizeof(BITMAPINFOHEADER),1,Fp);if(InfoHead.biBitCount!=8 && InfoHead.biBitCount!=24){fclose(Fp);return(ErrorImageColor);}/* 设置显示模式和显示区域*/SetVideoMode(0x12);SetPalReg(PalReg);SetDacReg(StandardPal,0,16);/* 对两种不同色彩数的图像分别进行处理*/if(InfoHead.biBitCount==8) /* 256色*/{for (N=0;N<256;N++){fread(&RGB, sizeof(RGBQUAD),1,Fp);ColorMap[N][0]=RGB.rgbRed;ColorMap[N][1]=RGB.rgbGreen;ColorMap[N][2]=RGB.rgbBlue;}W=(InfoHead.biWidth+3)/4*4;for(Y=InfoHead.biHeight-1;Y>=480;Y--)fread(Buffer,sizeof(unsigned char),W,Fp);for(;Y>0;Y--){fread(Buffer,sizeof(unsigned char),W,Fp);for (X=0;X<InfoHead.biWidth && X<640;X++){C=Buffer[X];Color=GetColor(ColorMap[C][0],ColorMap[C][1],ColorMap[C][2],X,Y); PutPixel (X,Y,Color);}}}else /* 24bits真彩色*/{W=(InfoHead.biWidth*3+3)/4*4;for(Y=InfoHead.biHeight-1;Y>639;Y--)fread(Buffer,sizeof(unsigned char),W,Fp);for(;Y>=0;Y--){fread(Buffer,sizeof(unsigned char),W,Fp);for(X=0;X<InfoHead.biWidth && X<640;X++){C=X*3;Color=GetColor(Buffer[C+2],Buffer[C+1],Buffer[C],X,Y);PutPixel(X,Y,Color);}}}getch();fclose(Fp);SetVideoMode(0x03);return(NoError);}int GetColor(unsigned char R, unsigned char G, unsigned char B, int X, int Y) {unsigned int L=LightnessMatrix[Y & 0x0F][X & 0x0F];return(ColorTable[(unsigned int)R*256/255>L][(unsigned int)G*256/255>L][(unsigned int)B*256/255>L]); }void SetVideoMode(unsigned char Mode){_AH=0x00;_AL=Mode;geninterrupt(0x10);}void SetPalReg(unsigned char *PalReg){_ES=FP_SEG((unsigned char far*)PalReg);_DX=FP_OFF((unsigned char far*)PalReg);_AX=0x1002;geninterrupt(0x10);}void SetDacReg(unsigned char *DacReg,int Color,int Count){_ES=FP_SEG((unsigned char far*)DacReg);_DX=FP_OFF((unsigned char far*)DacReg);_AX=0x1012;_BX=Color;_CX=Count;geninterrupt(0x10);}/* 在对应位置显示像素色彩*/void PutPixel(int X, int Y, unsigned char Color){_AH=0x0C;_AL=Color;_CX=X;_DX=Y;geninterrupt(0x10);}16色位图的显示文:吴进/Luckylai对于象大家常用TC的16色图形模式编程的初学者,如果能在程序里使用图片那就会方便很多了,以前在TC256上看见吴进写的《TC的16色BMP闪电显示(66k) 》的代码,发现写的的确不错,而且绝对能在TC的initgraph()初始化的BGI模式下使用。

C语言教案

C语言教案

重庆市农业学校
理论课程教师教案本
(2013 —2014 学年第二学期)
专业名称农村电气技术
课程名称C语言程序设计
授课教师甘雨
学校重庆市农业学校
授课主要内容或板书设计
课堂教学安排
授课主要内容或板书设计
课堂教学安排
授课主要内容或板书设计
课堂教学安排
授课主要内容或板书设计
课堂教学安排
授课主要内容或板书设计
课堂教学安排
授课主要内容或板书设计
课堂教学安排
授课主要内容或板书设计
课堂教学安排
授课主要内容或板书设计
课堂教学安排
授课主要内容或板书设计
课堂教学安排
授课主要内容或板书设计
课堂教学安排。

OpenGL入门教程(精)

OpenGL入门教程(精)

OpenGL 入门教程1.第一课:说起编程作图,大概还有很多人想起TC 的#include < graphics.h>吧?但是各位是否想过,那些画面绚丽的PC 游戏是如何编写出来的?就靠TC 那可怜的640*480 分辨率、16 色来做吗?显然是不行的。

本帖的目的是让大家放弃TC 的老旧图形接口,让大家接触一些新事物。

OpenGL 作为当前主流的图形API 之一,它在一些场合具有比DirectX 更优越的特性。

1、与C 语言紧密结合。

OpenGL 命令最初就是用C 语言函数来进行描述的,对于学习过C 语言的人来讲,OpenGL 是容易理解和学习的。

如果你曾经接触过TC 的graphics.h,你会发现,使用OpenGL 作图甚至比TC 更加简单。

2、强大的可移植性。

微软的Direct3D 虽然也是十分优秀的图形API,但它只用于Windows 系统(现在还要加上一个XBOX 游戏机)。

而OpenGL 不仅用于Windows,还可以用于Unix/Linux 等其它系统,它甚至在大型计算机、各种专业计算机(如:医疗用显示设备)上都有应用。

并且,OpenGL 的基本命令都做到了硬件无关,甚至是平台无关。

3、高性能的图形渲染。

OpenGL 是一个工业标准,它的技术紧跟时代,现今各个显卡厂家无一不对OpenGL 提供强力支持,激烈的竞争中使得OpenGL 性能一直领先。

总之,OpenGL 是一个很NB 的图形软件接口。

至于究竟有多NB,去看看DOOM 3 和QUAKE4 等专业游戏就知道了。

OpenGL 官方网站(英文)下面我将对Windows 下的OpenGL 编程进行简单介绍。

学习OpenGL 前的准备工作第一步,选择一个编译环境现在Windows 系统的主流编译环境有V isual Studio,Broland C++ Builder,Dev-C++等,它们都是支持OpenGL 的。

但这里我们选择V isual Studio 2005 作为学习OpenGL 的环境。

Windows程序设计课程复习题

Windows程序设计课程复习题

Windows程序设计复习题一选择题1 下列程序设计方法中,()是一种基于对象的程序设计方法。

A: MFC程序设计B: 使用WindowsAPI编程C: 使用VisualBasic语言编程 D: 使用C#程序设计语言编程2 MFC程序框架中,最先执行的函数是()。

A: WinMain函数B: CWinApp类的构造函数C: CWinApp类的InitInstance函数D: Cwnd的OnCreate函数3 CWinApp类中用()成员函数实现了对消息环的封装。

A: InitInstance( ) B: Run()C: OnIdle() D: WndProc()4 消息的4个参数中,表示消息类型的参数是()。

A: HWND hwnd B: messageID C: wParam D: lParam5下列各消息中,与程序的菜单命令、工具栏按钮或对话框按钮相对应的消息是()。

A: WM_CHAR B: WM_COMMAND C: WM_CREATE D: WM_PAINT6 MFC消息映射机制中,下列消息映射表BEGIN_MESSAGE_MAP(CGraphicsView, CScrollView)ON_WM_PAINT()END_MESSAGE_MAP()把WM_PAINT消息映射到()。

A: CGraphicsView类OnPaint函数B: CGraphicsView类OnDraw函数。

C: CScrollView类的OnPaint函数D: CScrollView类的OnDraw成员函数。

7 下列MFC类中,不直接支持消息映射的MFC基类是(),A: CCmdTarget B: CWinAPP C: CWnd D: CMap8 下列集合类中,其内部是使用散列表技术实现的MFC类的是()。

A: CArray B: CList C: CMap D: CPtrList9 下列CWnd类成员函数中,用于任何消息的可覆盖函数是()。

LBM算法在GPU组中的应用


L M 方 法 具 有 几 何 灵 活 、 行 本 性 、 于 编 程 、 度 较 B 并 易 精
高等特点 , 受到物理 学界、 学界、 计算机界 的极大 的重 视, 数 及
收稿 日期 :2 1-1 O 0 1 . ;修订 日期:2 1-3 0 0 1 01 — 。 0 2
基金项 目:上海市教委基金项 目 (6 Z04 。 0 A 4 )
e c e c f a a ll o u ai n i f in y o r l mp t t . p ec o
Ke o d :ltc l manmeh d C A; GP yw r s a i Bo z n to ; UD te t U; D Q ; MP 29 1
0 引 言
Q U的大规模并行硬件 架构与高性能浮 点运算和 内存操作的 P
特 点使 得 他 们 非 常 适 用 于 在 H C集 群 上 的 工 作 。 P NV DI I A在 2 0 0 6年 1 月 引入 了 Ts , 是 集 图 形 和 计 算 1 el 它 a 于 一 体 的构 架 ,在 这 个 架 构 里 面 有 一个 可 扩 展 的 多 线 程 流 式 多 处 理 器 , 个 流 式 多 处 理 器 又 有 8 流 处 理 器 , 一 种 新 的 这 个 是 处 理 器 架 构 :单 指 令 多 线 程 。它 允 许 内核 调 用 成 千 上 万 甚 至
据 的 加 速 器 , 代 的 G U 包 括 数 以百 计 的 处 理 单 元 。 同 时 , 现 P
发 展 非 常 迅 速 。 生 物 流 体 、 通 流 、 尺 度 流 等 方 面 都 得 到 在 交 微 应 用 和 发 展 。 本 文 基 于 G U 的 通 用 计 算 , 用 计 算 流 体 力 。 P 采 学 中 的 L M 方 法 来 对 二 维 方 腔 流进 行 数 值 模 拟 。相 关 实 验 B 是 基 于 N I A 公 司 的 图 形 处 理 单 元 T s 16 , 分 别 利 用 V DI el C 00 a

国民经济行业分类(GBT99


画线
• 画线工作需经两步完成:首先确定线的 起始端位置,这可通过调用成员函数 MoveTo完成,其原型为: CPoint MoveTo ( int x , int y ) ;
• MoveTo将绘图位置移至指定坐标处,并 返回移动前的绘图位置。确定了线的起 点后,即可使用成员函数LineTo画线: BOOL LineTo ( int x , int y ) ;
【例6-4】在窗口中随机的画了一些 直线和其它几何形状。
思路:建立MFC框架程序,在OnDraw中写 出相应的绘图代码即可。
• 步骤: 1)新建一个单文档MFC程序,项目名称为
mm065,其余设置不变。 2)在视图类的OnDraw中键入绘图代码。 3 在视图类的开始出饱含以下头文件。 4 编译并运行程序
镜像和转置
镜像(mirror)和转置(transpose) 镜像分 水平镜像和垂直镜像两种,水平镜像是 将矩阵的第一列和最后一列对调,第二 列和倒数第二列对调,依次类推;垂直 镜像则是交换行值;转置就是矩阵的转 置。转置和旋转90度是有区别的,转置 后图的宽高对换了。
浮雕
浮雕效果就是只将图像的变化部分突出出来, 而相同颜色部分则被淡化,使图像出现纵深感, 从而达到浮雕效果,采用的算法可以是将要处 理的像素取值为与处于对角线上的另一个像素 间的差值,这样只有颜色变化区才会出现色彩, 而颜色平淡区因差值几乎为零则变成黑色,可 以通过加上一个常量来增加一些亮度,如127, 计算公式如下:
CDC::SelectObject()方法选定放入当前设 备环境的新对象,并返回一个指向被替换 对象的指针,因此,语句
pOldPen = pDC->SelectObject(&penRed); 保存了原来的画笔。保存并恢复原来画 笔的原因是,每个图形设备接口对象要

OpenGL入门教程(精)


4、把解压得到的 glut.dll 和 glut32.dll 放到操作系统目录下面的 system32 文件夹内。(典型的位置为: C:\Windows\Sy st em32) 第三步,建立一个 OpenGL 工程 这里以 VisualStudio2005 为例。 选择 File->New->Project,然后选择 Win32 Console Application,选择一个名字,然后按 OK。 在谈出的对话框左边点 Application Settings,找到 Empty project 并勾上,选择 Finish。 然后向该工程添加一个代码文件,取名为“OpenGL.c”,注意用.c 来作为文件结尾。 搞定了,就跟平时的工程没什么两样的。 第一个 OpenGL 程序
在 glutDisplayFunc 函数中,我们设置了“当需要画图时,请调用 myDisplay 函数”。于是 myDisplay 函数就 用来画图。观察 myDisplay 中的三个函数调用,发现它们都以 gl 开头。这种以 gl 开头的函数都是 OpenGL 的标准函数,下面对用到的函数进行介绍。 1、glClear,清除。GL_COLOR_BUFFER_BIT 表示清除颜色,glClear 函数还可以清除其它的东西,但这里 不作介绍。 2、glR ect f,画一个矩形。四个参数分别表示了位于对角线上的两个点的横、纵坐标。 3、glFlush,保证前面的 OpenGL 命令立即执行(而不是让它们在缓冲区中等待)。其作用跟 fflush(stdout) 类似。
OpenGL 入门教程
1.第一课:
说起编程作图,大概还有很多人想起 TC 的#include < graphics.h>吧? 但是各位是否想过,那些画面绚丽的 PC 游戏是如何编写出来的?就靠 TC 那可怜的 640*480 分辨率、16 色来做吗?显然是不行的。

测绘程序设计实验指导书1

《测绘程序设计》实验指导书华北科技学院土木工程系测绘工程教研室2010年8月实验一:线性方程组解算一、实验目的与要求⒈初步掌握线性方程组的算法;⒉初步掌握线线性方程组在计算机上实现方法。

二、实验安排⒈实验共需用2学时。

⒉实验每个小组1人,用C/VB等语言在计算机上完成程序代码的编写,并调试通过,然后用算例印证程序的正确性。

三、实验步骤及要点⒈在课余时间,提前准备线性方程组解算程序代码;⒉上机时写入代码,并调试运行;⒊用算例进行印证。

四、实验指导(一)Turbo C工作环境一个C语言程序的实施是从进入Turbo C的集成环境开始的,而进入C语言的环境,一般有两种途径:从DOS环境进入和从Windows环境进入。

1、从DOS环境进入:在DOS命令行上键入:C>CD \TC↙(指定当前目录为TC子目录)C>TC↙ (进入Turbo C环境)这时进入Turbo C集成环境的主菜单窗口,屏幕显示如下图所示。

2、从Windows环境进入:在Windows 95/98环境中,如果本机中已安装了Turbo C,可以在桌面上建立一个快捷方式,双击该快捷图标即可进入C语言环境。

或者从开始菜单中找到“运行”,在运行对话框中键入“C:\TC\TC”,“确定”即可。

刚进入TC环境时,光带覆盖在“File”上,整个屏幕由四部分组成,依次为:主菜单、编辑窗口、信息窗口和功能提示行(或称快速参考行)。

(1)主菜单显示屏的顶部是主菜单条,它提供了8个选择项:File 处理文件(装入、存盘、选择、建立、换名存盘、写盘),目录操作(列表、改变工作目录),退出Turbo C,返回DOS 状态。

Edit 建立、编辑源文件。

Run 自动编辑、连接并运行程序。

Compile 编辑、生成目标文件组合成工作文件。

Project 将多个源文件和目标文件组合成工作文件。

Option 提供集成环境下的多种选择和设置(如设置存储模式、选择编参数、诊断及连接任选项)以及定义宏;也可记录Include、Output及Library文件目录,保存编译任选项和从配置文件加载任选项。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第二节 独立图形运行程序的建立
2002-10-19

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

BGI Error: Graphics not initialized (use 'initgraph')
因此,为了使用方便,应该建立一个不需要驱动程序就能独立运行的可执行图形
程序,Turbo C中规定用下述步骤(这里以EGA、VGA显示器为例):
I. 在C:\TC子目录下输入命令:BGIOBJ EGAVGA
此命令将驱动程序EGAVGA.BGI转换成EGAVGA.OBJ的目标文件。
II. 在C:\TC子目录下输入命令:TLIB LIB\GRAPHICS.LIB+EGAVGA
此命令的意思是将EGAVGA.OBJ的目标模块装到GRAPHICS.LIB库文件中。
III. 在程序中initgraph()函数调用之前加上一句:
registerbgidriver(EGAVGA_driver):
该函数告诉连接程序在连接时把EGAVGA的驱动程序装入到用户的执行程序中。
经过上面处理,编译链接后的执行程序可在任何目录或其它兼容机上运行。假设
已作了前两个步骤,若再向例6中加registerbgidriver()函数则变成:

#include
#include
int main()
{
int gdriver=DETECT,gmode;
registerbgidriver(EGAVGA_driver);
/*建立独立图形运行程序 */
initgraph(gdriver, gmode,"c:\\caic\\bgi");
bar3d(50,50,250,150,20,1);
getch();
closegraph();
return 0;
}
上例编译链接后产生的执行程序可独立运行。
如不初始化成EGA或CGA分辨率,而想初始化为CGA分辨率, 则只需要将上述
步骤中有EGAVGA的地方用CGA代替即可。

第三节 屏幕颜色的设置和清屏函数
2002-10-19
对于图形模式的屏幕颜色设置,同样分为背景色的设置和前景色的设置。在
Turbo C中分别用下面两个函数:

设置背景色: void far setbkcolor(int color);
设置作图色: void far setcolor(int color);
其中color 为图形方式下颜色的规定数值,对EGA,VGA显示器适配器,有关颜
色的符号常数及数值见下表所示。

有关屏幕颜色的符号常数表
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
符号常数 数值 含义 符号常数 数值 含义
──────────────────────────────
BLACK 0 黑色 DARKGRAY 8 深灰
BLUE 1 兰色 LIGHTBLUE 9 深兰
GREEN 2 绿色 LIGHTGREEN 10 淡绿
CYAN 3 青色 LIGHTCYAN 11 淡青
RED 4 红色 LIGHTRED 12 淡红
MAGENTA 5 洋红 LIGHTMAGENTA 13 淡洋红
BROWN 6 棕色 YELLOW 14 黄色
LIGHTGRAY 7 淡灰 WHITE 15 白色
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

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

CGA调色板与颜色值表:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
调色板 颜色值
──────────────────────────────
符号常数 数值 0 1 2 3
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
C0 0 背景 绿 红 黄
C1 1 背景 青 洋红 白
C2 2 背景 淡绿 淡红 黄
C33 3 背景 淡青 淡洋 红白
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
清除图形屏幕内容使用清屏函数,其调用格式如下:

voide far cleardevice(void);
有关颜色设置、清屏函数的使用请看例8:
#include
#include
int main()
{
int gdriver, gmode, i;
gdriver=DETECT;
initgraph(&gdriver, &gmode, "c:\\caic\\bgi"); /*图形初始化*/
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); 返回最高可用的颜色值。

相关文档
最新文档