C语言图形编程Word文件下载.docx

上传人:b****5 文档编号:20614272 上传时间:2023-01-24 格式:DOCX 页数:22 大小:41.93KB
下载 相关 举报
C语言图形编程Word文件下载.docx_第1页
第1页 / 共22页
C语言图形编程Word文件下载.docx_第2页
第2页 / 共22页
C语言图形编程Word文件下载.docx_第3页
第3页 / 共22页
C语言图形编程Word文件下载.docx_第4页
第4页 / 共22页
C语言图形编程Word文件下载.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

C语言图形编程Word文件下载.docx

《C语言图形编程Word文件下载.docx》由会员分享,可在线阅读,更多相关《C语言图形编程Word文件下载.docx(22页珍藏版)》请在冰豆网上搜索。

C语言图形编程Word文件下载.docx

只是受窗口大小的限制。

putch()函数输出一个字符到窗口内。

二、窗口内文本的输入函数

intgetche(void);

getche()函数从键盘上获得一个字符,在屏幕上显示的时候,如果字符超过了窗口右边界,则会被自动转移到下一行的开始位置。

例1:

下面这个程序使用了关于窗口大小的定义、颜色的设置等函数,在一个屏幕上不同位置定义了7个窗口,其背景色分别使用了7种不同的颜色。

#include<

stdio.h>

//文本模式下的函数

voidmain(void)

{inti;

char*c[]={"

BLACK"

"

BLUE"

GREEN"

CYAN"

RED"

MAGENTA"

BROWN"

LIGHTGRAY"

};

textbackground(0);

/*设置屏幕背景色*/

clrscr();

/*清除文本屏幕*/

cputs(c[0]);

for(i=1;

i<

8;

i++)

{window(10+i*5,5+i,30+i*5,15+i);

/*定义文本窗口*/

textbackground(i);

/*定义窗口背景色*/

clrscr();

cputs(c[i]);

/*清除窗口*/

}

getch();

表1.有关颜色的定义

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

符号常数?

数值?

含义?

字符或背景

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

BLACK?

?

0?

黑?

两者均可

BLUE?

1?

兰?

GREEN?

2?

绿?

CYAN?

3?

青?

RED?

4?

红?

MAGENTA?

5?

洋红?

BROWN?

6?

棕?

LIGHTGRAY?

7?

淡灰?

DARKGRAY?

8?

深灰?

只用于字符

LIGHTBLUE?

9?

淡兰?

LIGHTGREEN?

10?

淡绿?

LIGHTCYAN?

11?

淡青?

LIGHTRED?

12?

淡红?

LIGHTMAGENTA?

13?

淡洋红?

YELLOW?

14?

黄?

WHITE?

15?

白?

BLINK?

128?

闪烁?

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

例2:

捕获键盘按键。

键盘扫描码:

每个键都有一个两字节的扫描码,其格式:

#defineESC0x011B

#defineUP0x4800

#defineDOWN0x5000

#defineLEFT0x4B00

#defineRIGHT0x4D00

#defineENTER0x1C0D

在头文件<

bios.h>

中定义如下函数,用以捕获键盘按键。

intbioskey(intmode);

//此函数声明于bios.h

mode为1时,如有按键盘,则记录其扫描码至缓冲区,并返回其扫描码;

无按键则返回0;

不清除缓冲区。

mode为0时,从键盘缓冲区取出按键,并清除缓冲区。

若没有的话,则等待。

如:

ESC

UP

DOWN

LEFT

RIGHT

F1

F2

A

Z

a

z

#inlcude<

unionkeyTest

{

intc;

charch[2];

{unionkeyTestk;

while

(1)

while(bioskey

(1)==0);

/*function1returns0untilakeyispressed*/

k.c=bioskey(0);

/*function0returnsthekeythatiswaiting*/

printf(“High=[%d],Low=[%d]\n”,k.c,k.ch[1],k.ch[0]);

}

例3:

C提供的随机函数:

voidrandomize();

//初始化随机数发生器

intrandom(intubound);

//返回范围在0到ubound-1之间的一个随机整数。

2、图形模式

不同的显示器适配器(显卡)有不同的图形分辨率。

即是同一显卡,在不同模式下也有不同分辨率。

因此,在屏幕作图之前,必须根据显卡种类将显示器设置成为某种图形模式。

VGALO?

16色?

640*200

VGA?

VGAMED?

640*350

VGAHI?

2?

640*480

(1)图形模式的初始化

在屏幕作图之前,必须根据显示器适配器种类将显示器设置成为某种图形模式,在未设置图形模式之前,微机系统默认屏幕为文本模式(80列,25行字符模式),此时所有图形函数均不能工作。

设置屏幕为图形模式,可用下列图形初始化函数:

voidinitgraph(int*gdriver,int*gmode,char*path);

表2.图形驱动器、模式的符号常数及数值

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

图形驱动器(gdriver)?

图形模式(gmode)

───────────?

───────────?

色调?

分辨率

数值?

数值

CGA?

CGAC0?

C0?

320*200

CGAC1?

C1?

CGAC2?

C2?

CGAC3?

3?

C3?

CGAHI?

4?

2色?

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

MCGA?

MCGAC0?

MCGAC1?

MCGAC2?

MCGAC3?

MCGAMED?

MCGAHI?

640*480

EGA?

EGALO?

0?

16色?

EGAHI?

1?

EGA64?

EGA64LO?

EGA64HI?

4色?

EGAMON?

EGAMONHI?

IBM8514?

6?

IBM8514LO?

256色?

IBM8514HI?

256色1024*768

HERC?

HERCMONOHI?

720*348

ATT400?

ATT400C0?

ATT400C1?

ATT400C2?

ATT400C3?

ATT400MED?

4?

ATT400HI?

5?

VGA?

VGALO?

VGAMED?

VGAHI?

PC3270?

PC3270HI?

720*350

DETECT?

用于硬件测试

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

例子1:

使用图形初始化函数设置VGA高分辨率图形模式

#include<

graphics.h>

intmain()

{

intgdriver,gmode;

gdriver=VGA;

gmode=VGAHI;

initgraph(&

gdriver,&

gmode,"

c:

\\tc"

//图形模式初始化

bar3d(100,100,300,250,50,1);

/*画一长方体*/

closegraph();

//关闭图形模式,返回默认文本模式

return0;

}

例子2:

自动进行硬件测试后进行图形初始化

有时编程者并不知道所用的图形显示器适配器种类,或者需要将编写的程序用于不同图形驱动器,TurboC提供了一个自动检测显示器硬件后进行图形初始化的方法。

即用gdriver=DETECT语句后再跟initgraph()函数就行了。

例3:

intmain()

{intgdriver=DETECT,gmode;

initgraph(&

gdriver,&

gmode,c:

bar3d(50,50,150,30,1);

return0;

(2)退出图形状态

TurboC提供了函数closegraph(),其调用格式为:

voidfarclosegraph(void);

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

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

对于图形模式的屏幕颜色设置,同样分为背景色的设置和前景色的设置。

在TurboC中分别用下面两个函数。

voidfarsetbkcolor(intcolor);

//设置背景色:

voidfarsetcolor(intcolor);

//设置作图色:

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

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

含义

黑色?

深灰

兰色?

9?

深兰

绿色?

10?

淡绿

青色?

11?

淡青

红色?

淡红

5?

13?

淡洋红

6?

棕色?

14?

黄色

7?

15?

白色

清除图形屏幕内容使用清屏函数,其调用格式如下:

voidefarcleardevice(void);

有关颜色设置、清屏函数的使用。

例4:

#include<

#include<

intmain()

{?

intgdriver,gmode,i;

gdriver=DETECT;

gmode"

setbkcolor(0);

cleardevice();

for(i=0;

=15;

i++)

{?

setcolor(i);

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

delay(100);

for(i=0;

setbkcolor(i);

cleardevice();

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

delay(100);

closegraph();

(4).基本图形函数

基本图形函数包括画点,线以及其它一些基本图形的函数。

本节对这些函数

作一全面的介绍。

一、画点

1.画点函数

voidfarputpixel(intx,inty,intcolor);

该函数表示有指定的象素画一个按color所确定颜色的点。

对于颜色color的值可从表3中获得而对x,y是指图形象元的坐标。

对VGA适配器,?

它的最高分辨率为640x480,屏幕的左上角坐标为(0,0),右下角坐标为(639,479),?

关于点的另外一个函数是:

intfargetpixel(intx,inty);

它获得当前点(x,y)的颜色值。

2.有关坐标位置的函数

intfargetmaxx(void);

?

//返回x轴的最大值。

intfargetmaxy(void);

//返回y轴的最大值。

intfargetx(void);

//返回光标在x轴的位置。

voidfargety(void);

//返回光标有y轴的位置。

voidfarmoveto(intx,inty);

移动光标到(x,y)点,虽不是画点,在移动过程中亦画点。

voidfarmoverel(intdx,intdy);

移动光标从当前位置(x,y)移动到(x+dx,y+dy)的位置,移动过程中不画点。

二、画线

1.画线函数

TURBOC提供了一系列画线函数,下面分别叙述:

voidfarline(intx0,inty0,intx1,inty1);

画一条从点(x0,y0)到(x1,y1)的直线。

voidfarlineto(intx,inty);

画一从当前光标到点(x,y)的直线。

voidfarlinerel(intdx,intdy);

画一条从当前光标(x,y)到按相对增量确定的点(x+dx,y+dy)的直线。

voidfarcircl

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 总结汇报 > 工作总结汇报

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1