C语言图形编程Word格式文档下载.docx
- 文档编号:20732276
- 上传时间:2023-01-25
- 格式:DOCX
- 页数:22
- 大小:29.09KB
C语言图形编程Word格式文档下载.docx
《C语言图形编程Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《C语言图形编程Word格式文档下载.docx(22页珍藏版)》请在冰豆网上搜索。
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.有关颜色的定义
━━━━━━━━━━━━━━━━━━━━━━━━━━━
符号常数数值含义字符或背景
───────────────────────────
BLACK0黑两者均可
BLUE1兰两者均可
GREEN2绿两者均可
CYAN3青两者均可
RED4红两者均可
MAGENTA5洋红两者均可
BROWN6棕两者均可
LIGHTGRAY7淡灰两者均可
DARKGRAY8深灰只用于字符
LIGHTBLUE9淡兰只用于字符
LIGHTGREEN10淡绿只用于字符
LIGHTCYAN11淡青只用于字符
LIGHTRED12淡红只用于字符
LIGHTMAGENTA13淡洋红只用于字符
YELLOW14黄只用于字符
WHITE15白只用于字符
BLINK128闪烁只用于字符
例2:
捕获键盘按键。
键盘扫描码:
每个键都有一个两字节的扫描码,其格式:
Low
High
#defineESC0x011B
#defineUP0x4800
#defineDOWN0x5000
#defineLEFT0x4B00
#defineRIGHT0x4D00
#defineENTER0x1C0D
在头文件<
bios.h>
中定义如下函数,用以捕获键盘按键。
intbioskey(intmode);
//此函数声明于bios.h
mode为1时,如有按键盘,则记录其扫描码至缓冲区,并返回其扫描码;
无按键则返回0;
不清除缓冲区。
mode为0时,从键盘缓冲区取出按键,并清除缓冲区。
若没有的话,则等待。
如:
ESC27
High1UP
0High72DOWN0
High80LEFT0High75RIGHT077HighF1
059HighF20
60HighA6530HighZ90
44High9730Higha
zHigh30122#include<
#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、图形模式
不同的显示器适配器(显卡)有不同的图形分辨率。
即是同一显卡,在不同模式下也有不同分辨率。
因此,在屏幕作图之前,必须根据显卡种类将显示器设置成为某种图形模式。
VGALO016色640*200
VGAVGAMED116色640*350
VGAHI216色640*480
(1)图形模式的初始化
在屏幕作图之前,必须根据显示器适配器种类将显示器设置成为某种图形模式,在未设置图形模式之前,微机系统默认屏幕为文本模式(80列,25行字符模式),此时所有图形函数均不能工作。
设置屏幕为图形模式,可用下列图形初始化函数:
voidinitgraph(int*gdriver,int*gmode,char*path);
表2.图形驱动器、模式的符号常数及数值
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
图形驱动器(gdriver)图形模式(gmode)
──────────────────────色调分辨率
符号常数数值符号常数数值
CGA1CGAC00C0320*200
CGAC11C1320*200
CGAC22C2320*200
CGAC33C3320*200
CGAHI42色640*200
───────────────────────────────────
MCGA2MCGAC00C0320*200
MCGAC11C1320*200
MCGAC22C2320*200
MCGAC33C3320*200
MCGAMED42色640*200
MCGAHI52色640*480
EGA3EGALO016色640*200
EGAHI116色640*350
640*200色160EGA64LO4EGA64
EGA64HI14色640*350
EGAMON5EGAMONHI02色640*350
IBM85146IBM8514LO0256色640*480
IBM8514HI1256色1024*768
HERC7HERCMONOHI02色720*348
ATT4008ATT400C00C0320*200
ATT400C11C1320*200
ATT400C22C2320*200
ATT400C33C3320*200
ATT400MED42色320*200
ATT400HI52色320*200
VGA9VGALO016色640*200
VGAMED116色640*350
PC327010PC3270HI02色720*350
DETECT0用于硬件测试
例子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:
例
bar3d(50,50,150,30,1);
intmain()
{intgdriver=DETECT,gmode;
gdriver,&
gmode,
}c:
2)退出图形状态(TurboC提供了函数closegraph(),其调用格式为:
voidfarclosegraph(void);
调用该函数后可退出图形状态而进入文本方式(TurboC默认方式),并释放用于保存图形驱动程序和字体的系统内存。
(3)屏幕颜色的设置和清屏函数
对于图形模式的屏幕颜色设置,同样分为背景色的设置和前景色的设置。
在
TurboC中分别用下面两个函数。
voidfarsetbkcolor(intcolor);
//设置背景色:
voidfarsetcolor(intcolor);
//设置作图色:
其中color为图形方式下颜色的规定数值,对EGA,VGA显示器适配器,有关颜色的符号常数及数值见下表所示。
表3有关屏幕颜色的符号常数表
符号常数数值含义符号常数数值含义
BLACK0黑色DARKGRAY8深灰
BLUE1兰色LIGHTBLUE9深兰
GREEN2绿色LIGHTGREEN10淡绿
CYAN3青色LIGHTCYAN11淡青
RED4红色LIGHTRED12淡红
MAGENTA5洋红LIGHTMAGENTA13淡洋红
BROWN6棕色YELLOW14黄色
LIGHTGRAY7淡灰WHITE15白色
清除图形屏幕内容使用清屏函数,其调用格式如下:
voidefarcleardevice(void);
有关颜色设置、清屏函数的使用。
例4:
#include<
for(i=0;
=15;
{intgdriver,gmode,i;
setbkcolor(i);
gdriver=DETECT;
cleardevice();
gmode,\);
circle(320,240,20+i*10);
setbkcolor(0);
delay(100);
}for(i=0;
{setcolor(i);
circle(320,240,20+i*10);
}delay(100);
(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)的直线。
voidfarcircle(intx,inty,intradius);
以(x,y)为圆心,radius为半径,画一个圆。
voidfararc(intx,inty,intstangle,intendangle,intradius);
以(x,y)为圆心,radius为半径,从stangle开始到endangle结束(用度表示)画一段圆弧线。
在TURBOC中规定x轴正向为0度,逆时针方向旋转一周,依次为90,180,270和360度(其它有关函数也按此规定,不再重述)。
voidellipse(intx,inty,intstangle,intendangle,intxradius,intyradius);
以(x,y)为中心,xradius,yradius为x轴和y轴半径,从角stangle开始到endangle结束画一段椭圆线,当stangle=0,endangle=360时,画出一个完整的椭圆。
voidfarrectangle(intx1,inty1,intx2,inty2);
以(x1,y1)为左上角,(x2,y2)为右下角画一个矩形框。
voidfardrawpoly(intnumpoints,intfar*polypoints);
画一个顶点数为numpoints,各顶点坐标由polypoints给出的多边形。
polypoints整型数组必须至少有2倍顶点数个无素。
每一个顶点的坐标都定义为x,y,并且x在前。
值得注意的是当画一个封闭的多边形时,numpoints的值取实际多边形的顶点数加一,并且数组polypoints中第一个和最后一个点的坐标相同。
2.设定线型函数
线型包括:
宽度和形状。
其中宽度只有两种选择:
一点宽和三点宽。
而线的形状则有五种。
在没有对线的特性进行设定之前,TURBOC用其默认值,即一点宽的实线。
下面介绍有关线型的设置函数。
voidfarsetlinestyle(intlinestyle,unsignedupattern,int
thickness);
该函数用来设置线的有关信息,其中linestyle是线形状的规定,见表5。
表5.有关线的形状(linestyle)
━━━━━━━━━━━━━━━━━━━━━━━━━
符号常数数值含义
─────────────────────────
SOLID_LINE0实线
DOTTED_LINE1点线
CENTER_LINE2中心线
DASHED_LINE3点画线
USERBIT_LINE4用户定义线
thickness是线的宽度,见表6。
表6.有关线宽(thickness)
NORM_WIDTH1一点宽
THIC_WIDTH3三点宽
对于upattern,只有linestyle选USERBIT_LINE时才有意义(选其它线型,
uppattern取0即可)。
此进uppattern的16位二进制数的每一位代表一个象素,
如果那位为1,则该象素打开,否则该象素关闭。
有关线型设定和画线函数的例子如下所示。
#include<
stdlib.h>
intmain()setcolor
(2);
rectangle(220,140,420,340);
setcolor(WHITE);
intgdriver,gmode,i;
setlinestyle(4,0xaaaa,1);
line(220,240,420,240);
line(320,140,320,340);
setbkcolor(BLUE);
getch();
closegraph();
setcolor(GREEN);
return0;
circle(320,240,98);
}setlinestyle(0,0,3);
(5)封闭图形的填充
填充就是用规定的颜色和图模填满一个封闭图形。
一、先画轮廓再填充
TURBOC提供了一些先画出基本图形轮廓,再按规定图模和颜色填充整个封闭图形的函数。
在没有改变填充方式时,TURBOC以默认方式填充。
下面介绍这些函数。
voidfarbar(intx1,inty1,intx2,inty2);
确定一个以(x1,y1)为左上角,(x2,y2)为右下角的矩形窗口,再按规定图
模和颜色填充。
说明:
此函数不画出边框,所以填充色为边框。
voidfarbar3d(intx1,inty1,intx2,inty2,intdepth,int
topflag);
当topflag为非0时,画出一个三维的长方体。
当topflag为0时,三维图形不封顶,实际上很少这样使用。
说明:
bar3d()函数中,长方体第三维的方向不随任何参数而变,即始终为45度的方向。
voidfarpieslice(intx,inty,intstangle,intendangle,int
radius);
画一个以(x,y)为圆心,radius为半径,stangle为起始角度,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 图形 编程