C语言图形编程课件Word格式.docx
- 文档编号:21331975
- 上传时间:2023-01-29
- 格式:DOCX
- 页数:22
- 大小:55.24KB
C语言图形编程课件Word格式.docx
《C语言图形编程课件Word格式.docx》由会员分享,可在线阅读,更多相关《C语言图形编程课件Word格式.docx(22页珍藏版)》请在冰豆网上搜索。
它与printf()函数的用法完全一样,区别在于cprintf()函数的输出受窗口限制,而printf()函数的输出为整个屏幕。
cputs()函数输出一个字符串到屏幕上,它与puts()函数用法完全一样,
只是受窗口大小的限制。
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);
/*定义窗口背景色*/
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
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
C3
CGAHI
2色
───────────────────────────────────
MCGA
MCGAC0
MCGAC1
MCGAC2
MCGAC3
MCGAMED
MCGAHI
640*480
EGA
EGALO
EGAHI
EGA64
EGA64LO
EGA64HI
4色
EGAMON
EGAMONHI
IBM8514
IBM8514LO
256色
IBM8514HI
256色1024*768
HERC
HERCMONOHI
720*348
ATT400
ATT400C0
ATT400C1
ATT400C2
ATT400C3
ATT400MED
4
ATT400HI
VGA
VGALO
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有关屏幕颜色的符号常数表
含义
黑色
深灰
兰色
深兰
绿色
淡绿
青色
淡青
红色
淡红
5
13
淡洋红
6
棕色
黄色
7
白色
清除图形屏幕内容使用清屏函数,其调用格式如下:
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+
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 图形 编程 课件