C语言图形处理

合集下载

C语言 BMP图片处理

C语言 BMP图片处理

C语言BMP图片处理BMP是bitmap的缩写形式,bitmap顾名思义,就是位图也即Windows位图。

它一般由4部分组成:文件头信息块、图像描述信息块、颜色表(在真彩色模式无颜色表)和图像数据区组成。

在系统中以BMP为扩展名保存。

打开Windows的画图程序,在保存图像时,可以看到三个选项:2色位图(黑白)、16色位图、256色位图和24位位图。

这是最普通的生成位图的工具,在这里讲解的BMP位图形式,主要就是指用画图生成的位图(当然,也可以用其它工具软件生成)。

现在讲解BMP的4个组成部分:1.文件头信息块0000-0001:文件标识,为字母ASCII码“BM”。

0002-0005:文件大小。

0006-0009:保留,每字节以“00”填写。

000A-000D:记录图像数据区的起始位置。

各字节的信息依次含义为:文件头信息块大小,图像描述信息块的大小,图像颜色表的大小,保留(为01)。

2.图像描述信息块000E-0011:图像描述信息块的大小,常为28H。

0012-0015:图像宽度。

0016-0019:图像高度。

001A-001B:图像的plane(平面?)总数(恒为1)。

001C-001D:记录像素的位数,很重要的数值,图像的颜色数由该值决定。

001E-0021:数据压缩方式(数值位0:不压缩;1:8位压缩;2:4位压缩)。

0022-0025:图像区数据的大小。

0026-0029:水平每米有多少像素,在设备无关位图(.DIB)中,每字节以00H 填写。

002A-002D:垂直每米有多少像素,在设备无关位图(.DIB)中,每字节以00H 填写。

002E-0031:此图像所用的颜色数,如值为0,表示所有颜色一样重要。

3.颜色表颜色表的大小根据所使用的颜色模式而定:2色图像为8字节;16色图像位64字节;256色图像为1024字节。

其中,每4字节表示一种颜色,并以B(蓝色)、G(绿色)、R(红色)、alpha(像素的透明度值,一般不需要)。

c语言图形处理函数及其应用

c语言图形处理函数及其应用
补充内容:
图形处理函数及其应用
主要内容:
一、图形初始化及应用设置函数 二、常用的作图函数 三、字符屏幕控制函数 四、图形处理函数应用
一、图形初始化及应用设置函数
1、使用#include “graphics.h” 2、初始化图形系统函数 void far initgraph(gdrive,gmode,gpath) int far *gdrive, *gmode, *gpath; gdrive:图形驱动器代号,gmode:图形模式代号, gpath: 图形驱动程序路径。 如:常用方式: int gdrive,gmode; gdrive=DETECT; initgraph(&gdrive,&gmode, “d:\\tc”); 3、擦除整个图形屏幕,并将cp(当前位置)移 到原点(0,0) void far cleardevice(void)
14、设置正文字形、显示方向、字符大小函数 void far settextstyle(font, direction, charsize) int font, direction, charsize; (1)font(字形)取值 0:8*8字形,1:3倍笔划字形, 2:小号笔划字形, 3:无衬线笔划字形, 4:黑体笔划字形。 (2)direction(显示方向)取值,0:自左向右,1:从 底向上。 (3)charsize(字符放大因子)取值 0:用户自定义, 1:8*8大小,2:16*16大小, ……。最大为10倍。 说明:该函数影响outtext( )和outtextxy( )两个函数。
浅青 浅品红
13、设置画线宽度和线型的函数 void far setlinestyle(linestyle, upattern, thickness) int linestyle, thickness; unsigned upattern; linestyle(线型)取值,0:实线,1:点,2:长短, 3:长虚线,4:自定义线型。 thickness(宽度)取值: 1、3。 upattern:当linestyle为4时起作用。 14、检测图象区域所含的字节数函数 unsigned far imagesize(left, top, right, bottom) int left, top, right, bottom; 返回值为区域内图象的字节数。 15、申请分配动态存储区函数(包含在stdlib.h中) void *malloc(unsigned int size) 返回存储区的首地址。若不成功,则返回NULL。

C语言控制台图形化编程

C语言控制台图形化编程

C语言控制台图形化编程在计算机编程领域,图形化界面一直是提高用户体验的重要手段之一。

在C语言中,虽然没有直接支持图形化编程的库函数,但我们可以利用一些技巧和库来实现控制台图形化编程。

本文将介绍如何在C语言中通过控制台绘制基本的图形和实现简单的交互效果。

一、基本概念在开始编写控制台图形化程序之前,我们需要了解一些基本概念。

首先是像素和字符的概念,控制台上的每个字符都可以看作一个像素,可以通过改变字符的颜色来实现绘图效果。

其次是控制台的坐标系,通常以左上角为原点,向右为X轴正方向,向下为Y轴正方向。

二、绘制基本图形1. 绘制点在控制台中绘制点可以通过改变字符的颜色实现,可以使用Windows API函数SetConsoleTextAttribute来设置字符的颜色。

例如,下面代码可以绘制一个红色的点:```c#include <windows.h>#include <stdio.h>void gotoxy(int x, int y) {COORD pos;pos.X = x;pos.Y = y;SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), pos);}void setcolor(int color) {HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);SetConsoleTextAttribute(hConsole, color);}int main() {int x = 10, y = 5;gotoxy(x, y);setcolor(FOREGROUND_RED);printf("*");return 0;}```2. 绘制线段要在控制台中实现绘制线段的效果,我们可以利用字符的重复打印来模拟直线的效果。

例如,下面代码可以绘制一条水平线段:```c#include <stdio.h>void setcolor(int color) {printf("\033[1;%dm", color);}int main() {int x1 = 10, x2 = 20, y = 5;setcolor(31); // 设置为红色for (int i = x1; i <= x2; i++) {printf("*");}return 0;}```3. 绘制矩形要在控制台中绘制矩形,可以利用循环来控制每行的输出。

C语言图形编程入门指南

C语言图形编程入门指南

C语言图形编程入门指南C语言作为一种广泛应用于软件开发领域的编程语言,具有高效、灵活和可移植的特点。

而图形编程则是C语言中一个重要的应用领域,它可以帮助开发者创建各种各样的图形界面和交互式应用程序。

本文将为读者提供一份C语言图形编程入门指南,帮助初学者快速入门并掌握基本的图形编程技巧。

一、图形编程的基本原理图形编程主要涉及两个方面:图形绘制和用户交互。

图形绘制是指在屏幕上绘制各种图形元素,如点、线、矩形和圆等。

用户交互则是指通过鼠标、键盘等输入设备与程序进行交互,实现用户的操作和反馈。

在C语言中,图形编程主要依赖于图形库的支持。

常见的图形库有BGI (Borland Graphics Interface)和OpenGL等。

BGI是一种基于DOS操作系统的图形库,而OpenGL则是一种跨平台的图形库,支持多种操作系统和硬件平台。

二、BGI图形编程入门BGI图形编程是C语言中最常用的图形编程方法之一。

它提供了一系列的函数和命令,可以实现图形绘制和用户交互。

下面是一个简单的BGI图形编程示例:```c#include <graphics.h>int main(){int gd = DETECT, gm;initgraph(&gd, &gm, "");circle(200, 200, 100);closegraph();return 0;}```上述代码使用了BGI图形库中的`initgraph`函数来初始化图形环境,`circle`函数用于绘制一个圆,`getch`函数用于等待用户按下任意键,`closegraph`函数用于关闭图形环境。

通过这段代码,我们可以在屏幕上绘制一个半径为100的圆,并等待用户的操作。

三、OpenGL图形编程入门OpenGL是一种跨平台的图形库,它提供了丰富的函数和命令,可以实现高效的图形渲染和复杂的图形效果。

下面是一个简单的OpenGL图形编程示例:```c#include <GL/glut.h>void display(){glClear(GL_COLOR_BUFFER_BIT);glBegin(GL_POLYGON);glVertex2f(-0.5, -0.5);glVertex2f(0.5, -0.5);glVertex2f(0.5, 0.5);glVertex2f(-0.5, 0.5);glFlush();}int main(int argc, char** argv){glutInit(&argc, argv);glutCreateWindow("OpenGL Example");glutDisplayFunc(display);glutMainLoop();return 0;}```上述代码使用了OpenGL图形库中的`glutInit`函数来初始化图形环境,`glutCreateWindow`函数用于创建一个窗口,`glutDisplayFunc`函数用于指定绘制函数,`glutMainLoop`函数用于进入消息循环。

C语言数字图像处理之直方图均衡化

C语言数字图像处理之直方图均衡化

C语⾔数字图像处理之直⽅图均衡化本⽂实例为⼤家分享了C语⾔直⽅图均衡化的具体代码,供⼤家参考,具体内容如下原理直⽅图均衡化(Histogram Equalization) ⼜称直⽅图平坦化,实质上是对图像进⾏⾮线性拉伸,重新分配图像象元值,使⼀定灰度范围内象元值的数量⼤致相等。

这样,原来直⽅图中间的峰顶部分对⽐度得到增强,⽽两侧的⾕底部分对⽐度降低,输出图像的直⽅图是⼀个较平的分段直⽅图:如果输出数据分段值较⼩的话,会产⽣粗略分类的视觉效果。

直⽅图是表⽰数字图像中每⼀灰度出现频率的统计关系。

直⽅图能给出图像灰度范围、每个灰度的频度和灰度的分布、整幅图像的平均明暗和对⽐度等概貌性描述。

灰度直⽅图是灰度级的函数, 反映的是图像中具有该灰度级像素的个数, 其横坐标是灰度级r, 纵坐标是该灰度级出现的频率( 即像素的个数) pr( r) , 整个坐标系描述的是图像灰度级的分布情况, 由此可以看出图像的灰度分布特性, 即若⼤部分像素集中在低灰度区域, 图像呈现暗的特性; 若像素集中在⾼灰度区域, 图像呈现亮的特性。

灰度数字图像是每个像素只有⼀个采样颜⾊的图像。

这类图像通常显⽰为从最暗⿊⾊到最亮的⽩⾊的灰度。

灰度图像与⿊⽩图像不同,在计算机图像领域中⿊⽩图像只有⿊⽩实现流程:1)统计每个灰度级像素点的个数2)计算灰度分布密度3)计算累计直⽅图分布4)累计分布取整,保存计算出来的灰度映射关系处理图⽚规格800*600 8位灰度单通道原图直⽅图均衡化分析:本次实验中,我故意把原图调暗,进⾏直⽅图均衡化后可以明显感受到整幅图像亮度增⼤了,⽽且某些细节⽅⾯更加突出。

出现问题最初进⾏直⽅图均衡化时,输出结果如下:经分析,是没有对数组初始化置零导致的。

Hist数组是进⾏⼀个统计像素点个数的数组,最初倘若不置零,结果必然毫⽆意义。

故⽽添加数组内存置零的操作:经测试,问题解决。

附代码#include <stdio.h>#include <stdlib.h>#include <memory.h>#define height 600#define width 800typedef unsigned char BYTE; // 定义BYTE类型,占1个字节int main(void){FILE *fp = NULL;//BYTE Pic[height][width];BYTE *ptr;BYTE **Pic = new BYTE *[height];for (int i = 0; i != height; ++i){Pic[i] = new BYTE[width];}fp = fopen("weiminglake_huidu.raw", "rb");ptr = (BYTE*)malloc(width * height * sizeof(BYTE));//创建内存for (int i = 0; i < height; i++){for (int j = 0; j < width; j++){fread(ptr, 1, 1, fp);Pic[i][j] = *ptr; // 把图像输⼊到2维数组中,变成矩阵型式ptr++;}}fclose(fp);int hist[256];float fpHist[256];float eqHistTemp[256];int eqHist[256];int size = height *width;int i, j;memset(&hist, 0x00, sizeof(int) * 256);memset(&fpHist, 0x00, sizeof(float) * 256);memset(&eqHistTemp, 0x00, sizeof(float) * 256);for (i = 0; i < height; i++) //计算差分矩阵直⽅图直⽅图统计每个灰度级像素点的个数{for (j = 0; j < width; j++){unsigned char GrayIndex = Pic[i][j];hist[GrayIndex] ++;}}for (i = 0; i< 256; i++) // 计算灰度分布密度{fpHist[i] = (float)hist[i] / (float)size;}for (i = 0; i< 256; i++) // 计算累计直⽅图分布{if (i == 0){eqHistTemp[i] = fpHist[i];}else{eqHistTemp[i] = eqHistTemp[i - 1] + fpHist[i];}}//累计分布取整,保存计算出来的灰度映射关系for (i = 0; i< 256; i++){eqHist[i] = (int)(255.0 * eqHistTemp[i] + 0.5);}for (i = 0; i < height; i++) //进⾏灰度映射均衡化{for (j = 0; j < width; j++){unsigned char GrayIndex = Pic[i][j];Pic[i][j] = eqHist[GrayIndex];}}fp = fopen("output.raw", "wb");for (i = 0; i < height; i++){for (j = 0; j < width; j++){fwrite(&Pic[i][j], 1, 1, fp);}}fclose(fp);return 0;}以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。

《如何使用C语言实现图形编程?》

《如何使用C语言实现图形编程?》

《如何使用C语言实现图形编程?》
C语言是一种多用途的编程语言。

它可以用于不同类型的软件
开发,其中包括图形编程。

在这里,我们将着重介绍如何使用
C语言来实现图形编程。

首先,要求学习者具备基本的C、C++知识,特别是对指针的
概念有所理解和运用。

此外,理解图形库如OpenGL等的基本原理也是必要的。

之后,学习者需要正确下载并安装图形库,例如OpenGL。


后学习者需要设置图形库的API函数库,使之可以在开发环
境中正确运行。

学习者还需要下载及安装支持OpenGL的图元库,如GLU库。

接下来,学习者需要准备并编写C语言代码,以绘制多种图元,如:点、线、多边形、圆形等,借此实现图形编程。

开发者需要通过调用OpenGL函数实现绘图功能,以及使用转换函数用于变换图元位置和大小。

此外,开发者还可以通过调用窗口库函数,实现创建窗口及相应的窗口事件,从而实现交互式图形编程。

另外,开发者可以通过调用GLU函数,创建立体几何体,以及调用OpenGL的
着色函数,实现图形着色及透明效果。

最后,学习者可以执行编译,调试并运行他们的C语言程序,以看到其实现的图形编程效果。

总之,使用C语言实现图形编程的方法是复杂的,需要学习者对C语言、C++以及OpenGL等相关图形库有所了解,才能进行有效的图形编程实现。

C语言中的图形处理与图像识别技术

C语言中的图形处理与图像识别技术

C语言中的图形处理与图像识别技术C语言是一种广泛用于编写系统软件和应用程序的高级编程语言。

在C语言中,图形处理和图像识别技术是非常重要的应用领域。

图形处理技术涉及到图像的生成、编辑和显示,而图像识别技术则涉及到图像的特征提取和识别。

本文将介绍C语言中常用的图形处理与图像识别技术。

首先,图形处理技术在C语言中的应用非常广泛。

我们可以利用C语言编写程序来生成各种几何图形,如线条、矩形、圆形等。

通过调用图形库函数,我们可以实现图形的绘制和显示。

此外,C语言还支持图形的编辑和变换操作,比如旋转、缩放、平移等。

通过这些操作,我们可以实现对图形的各种处理,从而满足不同应用场景的需求。

另外,图像识别技术在C语言中的应用也越来越重要。

图像识别技术可以帮助我们从图像中提取有用的信息,并进行进一步的处理和分析。

在C语言中,我们可以利用图像处理库来实现图像的读取、处理和识别。

通过这些库函数,我们可以实现图像的特征提取、目标检测、人脸识别等功能。

这些功能对于智能监控、医学影像分析、自动驾驶等领域具有重要意义。

在使用C语言进行图形处理和图像识别时,需要注意以下几点。

首先,要熟悉C语言的基本语法和图形处理库函数的使用方法。

其次,要理解图形处理和图像识别的基本原理,包括像素处理、颜色空间转换、特征提取等。

最后,要不断实践和调试程序,从而提高对图形处理和图像识别技术的理解和掌握。

总之,C语言中的图形处理与图像识别技术是一个非常有趣和有挑战的领域。

通过学习和实践,我们可以掌握这些技术,从而实现各种图形处理和图像识别应用。

希望本文对你有所帮助,谢谢阅读!。

C语言图像处理函数大全

C语言图像处理函数大全

C语言图像处理函数大全,完整版∙∙1.图像平移图像平移只是改变图像在屏幕上的位置,图像本身并不发生变化。

假设原图像区域左上角坐标为(x0, y0),右下角坐标为(x1, y1),将图像分别沿x和y轴平移dx和dy,则新图像的左上角坐标为(x0 +dx, y0+dy),右下角坐标为(x1+dx, y1+dy)。

坐标平移变换公式为:x′ = x +dxy′ = y +dy在屏幕上实现图像的移动分为四个步骤:⑴保存原图像到缓冲区。

⑵擦除原图像。

⑶计算平移后的新坐标。

⑷在新的坐标位置重新显示原图像。

其中,擦除原图像的方法与图形变换中擦除原图形的方法一致,在实现中仍采用XOR异或方式画图擦除原图像。

对于新坐标值的计算还需要考虑边界情况,不要在图像平移后超出允许的屏幕范围。

此外,如果采用C函数getimage()和putimage()来保存和恢复图像,则图像的大小不能超过64K。

2.图像颠倒图像颠倒是指把定义好的图像区域上下翻转地显示在屏幕上。

分析图像颠倒的过程,可发现每行的图像信息都保持不变,而只是改变了行的顺序,将第一行与最后的第n行相互交换,第二行与第n-1行交换……,依此类推,从而实现了图像的颠倒。

只需采用按行交换的方式,即可方便地修改缓冲区内容,实现图像的颠倒。

基本步骤如下:(1) 用getimage()保存原图像,并擦除原图像。

(2) 计算图像的高度,即行数height;计算图像宽度width;计算保存一行图像信息height = bottom -top +1;width = right -left +1;linebytes = (width +7) /8 *4;(3)利用行交换缓冲区linebuf在图像内存缓冲区中进行信息交换,即把第一行与最末行交换,第2行与第n-1行交换……,依此类推,直至全部交换完毕。

(4)把交换后的图像缓冲区内容重新显示在屏幕上。

3.图像镜像变换镜像变换是指将指定区域的图像左右翻转地显示在屏幕。

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

• int gettext(int xl,int yl,int x2,int y2,void *buffer); int puttext(int x1,int y1,int x2,int y2,void *buffer); gettext()函数是将屏幕上指定的矩形区域内文本内容存 入buffer 指针指向的一个内存空间。内存的大小用下 式计算: 所用字节大小=行数*列数*2。其中: 行数=y2-y1+1 列数=x2-x1+1 puttext()函数则是 将gettext()函数存入内存buffer中的文字内容拷贝到屏 幕上指定的位置。 int movetext(int x1, int x2, int y2, int x3, int y3); movetext()函数将屏幕上左上角为(x1, y1),右下角为 (x2, y2)的一矩形窗口内的文本内容拷贝到左上角为(x3, y3)的新的位置。该函数的坐标也是相对于整个屏幕而 言的。
• Turbo C2.0可以定义屏幕上的一个矩形域作为 窗口,使用window()函数定义。窗口定义之后, 用有关窗口的输入输出函数就可以只在此窗口 内进行操作而不超出窗口的边界。 • window()函数的调用格式为: void window(int left, int top, int right, int bottom);该函数的原型 在conio.h 中 (关于文本窗口的所有函数其头文 件均为conio.h,后面不再说明)。 函数中形式参 数(int left, int top)是窗口左上角的坐标,(int right, int bottom)是窗口的右下角坐标,其中 (left, top)和(right, bottom) 是相对于整个屏幕 而言的。
• Turbo C 2.0规定整个屏幕的左上角坐标 为(1, 1),右下角坐标为(80, 25)。并规定 沿水平方向为 X轴,方向朝右;沿垂直 方向为 Y轴,方向朝下。若window()函 数中的坐标超过了屏幕坐标的界限,则 窗口的定义就失去了意义,也就是说定 义将不起作用,但程序编译链接时并不 出错。
• 注意: ①使用以上几种函数, 当输出超出 窗口的右边界时会自动转到下一行的开 始处继续输出。 ②当窗口内填满内容仍没有结束输 出时,窗口屏幕将会自动逐行上卷直到 输出结束为止。
• 窗口内文本的输入函数
• int getche(void); 该函数在前面已经讲过, 需要说明的是,getche()函数从键盘上获 得一个字符,在屏幕上显示的时候,如 果字符超过了窗口右边界,则会被自动 转移到下一行的开始位置。
下面再介绍一些函数: void highvideo(void); 设置显示器高亮度显示字符 void lowvideo(void); 设置显示器低亮度显示字符 void normvideo(void); 使显示器返回到程序运行前 的显示方式 int wherex(void); 这两个函数返回当前窗口下光标的 x,y坐标 int wherey(void);
• 下面这个程序使用了关于窗口大小的定义、颜色的设置等函 数,在一个屏幕上不同位置定义了7个窗口,其背景色分别使用 了7种不同的颜色。 #include #include main() { int i; textbackground(0); /* 设置屏幕背景色 */ clrscr(); /* 清除文本屏幕 */ for(i=1; i<8; i++) { window(10+i*5, 5+i, 30+i*5, 15+i); /* 定义文本窗口 */ textbackground(i); /* 定义窗口背景色 */ clrscr(); /* 清除窗口 */ } getch(); }
设置屏幕为图形模式,可用下列图形初 始化函数: void far initgraph(int far *gdriver, int far *gmode,char *path); 其中gdriver和gmode分别表示图 形驱动器和模式,path是指图形驱动程 序所在的目录路径。
• •
有时编程者并不知道所用的图形显示器适配器种类,或者需要将编写 的程序用于不同图形驱动器。 void far detectgraph(int *gdriver, *gmode); 其中gdriver和gmode的意 义与上面相同。 自动进行硬件测试后进行图形初始化#include int main() { int gdriver, gmode; detectgraph(&gdriver, &gmode); /*自动测试硬件*/ printf("the graphics driver is %d, mode is %d\n", gdriver,gmode); /*输出测试结果*/ getch(); initgraph(&gdriver, &gmode, "c:\\caic\\bgi"); /* 根据测试结果初始化图形*/ bar3d(10, 10, 130, 250, 20, 1); getch(); closegraph(); return 0; }
• 注意: (1) 对于背景只有0 到7 共八种颜色,若取 大于7 小于15的数,则代表的颜色与减 7后 的值对应的颜色相同。 (2) 用textbackground()和textcolor() 函数 设置了窗口的背景与字符颜色后,在没有用 clrscr()函数清除窗口之前,颜色不会改变, 直到 使用了函数clrscr(),整个窗口和随后输出到 窗口中的文本字符才会变成新颜色。 (3) 用textattr()函数时背景颜色应左移4位, 才能使3位背景颜色移到正确位置
• 上表中的符号常数与相应的数值等价, 二者可以互换。例如设定 兰色背景可以 使用textbackground(1), 也可以使用 textbackground(BLUE),两者没有任何 区别,只不过后者比较容易记忆,一看 就知道是兰色。
• Turbo C 另外还提供了一个函数,可以同时设置文本 的字符和背景颜色,这个函数的调用格式为: void textattr(int attr); 其中: attr的值表示颜色形式编码的信 息,每一位代表的含义如下: 位76543210 Bbbbcccc ↓ ┕┙ ┖─┘ 闪烁 背景颜色 字符颜色 字节低四位cccc设置字符颜色(0到15),4 ̄6三位 bbb设置背景颜色(0到7),第7位B设置字符是否闪烁。 假如要设置一个兰底黄字,定义方法 如下: textattr(YELLOW+(BLUE<<4));若再要求字符 闪烁,则定义变为: textattr(128+YELLOW+(BLUE<<4);

下面这个程序给上例中加入了一些文本的输出函数。 #include #include int main() { int i; char *c[]={"BLACK", "BLUE", "GREEN", "CYAN", "RED&#N", "LIGHTGRAY"}; textbackground(0); /* 设置屏幕背景色 */ clrscr(); /* 清除文本屏幕 */ for(i=1; i<8; i++) { window(10+i*5,5+i,30+i*5,15+i); /* 定义文本窗口 */ textbackground(i); /* 定义窗口背景色 */ clrscr(); /* 清除窗口 */ } getch(); return 0; }
Turbo C 提供了非常丰富的图形函数,所有图形函数的原 型均在graphics. h 中,本节主要介绍图形模式的初始化、 独立图形程序的建立、基本图形功能、图形窗口以及图 形模式下的文本输出等函数。 使用图形函数时要确保有显示器图形驱动程序*BGI,同 时将集成开发环境Options/Linker中的Graphics lib选为on, 只有这样才能保证正确使用图形函数。图形模式的初始 化不同的显示器适配器有不同的图形分辨率。即是同一 显示器适配器,在不同模式下也有不同分辨率。因此, 在屏幕作图之前,必须根据显示器适配器种类将显示器 设置成为某种图形模式,在未设置图形模式之前,微机 系统默认屏幕为文本模式(80列,25行字符模式),此时所 有图形函数均不能工作。
另外,一个屏幕可以定义多个窗口,当需要用另一窗口 时,可将定义该窗口的window() 函数再调用一次,此时 该窗口便成为现行窗口了。如要定义一个窗口左上角在 屏幕(20,5)处,大小为30列15行的窗口可写成: window(20, 5, 50, 25);
• 文本窗口颜色的设置文本窗口颜色的设 置包括背景颜色的设置和字符颜色的设 置,使用的函数及其调用格式为: 设置 背景颜色: void textbackground(int color); 设置字符颜色: void textcolor(int color); 有关颜色的定义见下表:
注意: 1. gettext()函数和puttext() 函数中的坐标是对整个屏 幕而言的, 即是屏幕的绝对坐标,而不是相对窗口的坐标。 2. movetext()函数是拷贝而不是移动窗口区域内容, 即使用该函数后, 原位置区域的文本内容仍然存在。

main() {int i; char *f[]={"Load F3","Pick Alt-F3","New ", "Save F2","Write to ","Directory", "Change dir","Os shell ","Quit Alt-X"}; char buf[11*16*2]; clrscr(); textcolor(YELLOW); textbackground(BLUE); clrscr(); gettext(10, 2, 24, 11, buf); window(10, 2, 24, 11); textbackground(RED); textcolor(YELLOW); clrscr(); for(i=0; i<9; i++) {gotoxy(1, i+1); cprintf("%s", f[i]);} getch(); movetext(10, 2, 24, 11, 40, 10); puttext(10, 2, 24, 11, buf); getch();}
相关文档
最新文档