自动显示技术.docx
《自动显示技术.docx》由会员分享,可在线阅读,更多相关《自动显示技术.docx(30页珍藏版)》请在冰豆网上搜索。
自动显示技术
实验一、计算机显示知识
一、上机实验目的
1.观察计算机显示系统构成,认识彩色显示的相关硬件和软件。
2.了解计算机图形显示过程并学习VGA显示模式设置知识。
3.了解计算机显示器特性和使用,认识计算机图形显示的控制与编程技术知识。
二、实验设备及软件
1.计算机系统1套;
2.测试和应用软件若干;
3.高倍放大镜1个;
4.课程多媒体软件1套;
三、上机实验内容
1.认识计算机显示系统构成结构
A、观察计算机的基本外部构成;
主机和显示器。
B、观察VGA显示器的基本特性;
C、观察VGA显示卡及显示器的显示信号接口。
1、VGA采用模拟接口与显示器相连,极大地提高了VGA的色彩显示能力。
2、VGA的寄存器除了少数几个外都是可读写的,这给编程提供了很大的方便。
3、VGA将其占用存储器的时间减到了最小,使得CPU能以快得多的速度来读写显示存储器。
4、VGA将16色模式的分辨率提高到了640×480,同时VGA新提供了一种具有320×200分辨率、256种颜色的图形模式。
2.认识VGA显示模式
A、认识计算机的字符模式及其基本特点;
计算机的字符模式:
计算机的字符模式也称文本模式,在字符模式下,最基本的操作单元为字符,一屏所能显示字符的行数和列数及字符属性的表示方法即构成了一种具体的字符显示模式。
计算机的字符模式的基本特点:
具有极快的显示速度,但它不能显示图形
B、认识计算机图形模式的种类、表示及其特点和主要特性参数;
计算机图形模式的种类:
普通模式和高级模式
一般表示为:
水平象素数*垂直象素数*色彩模式,如512*480*32K色
特点:
图形模式由各种色素和各种分辨率相组合,但这种组合不完全,在某些色彩模式下不具有某些分辨率。
一定的分辨率有一定的象色素数,一定的色彩模式决定了每个象素在显示存储器中所占用的位数,每种显示模式部有一定的存储需要量。
主要特性参数:
所需显存容量、实际最低配置显存容量
C、学习设置计算机图形模式的方法及相关要点;
第一种图形操作法:
显示存储器的读写
第二种图形操作法:
VGA寄存器的操作
第三种图形操作法:
视频BIOS的中断
3.了解计算机显示系统特性指标及其参数
A、观察并了解Windows下VGA显示卡视频地址空间特性;
B、使用测试软件测试计算机显示特性及其指标;
C、使用应用软件观察显示模式的特性
D、使用课程多媒体教程学习计算机显示部件知识
四、基本实验问题:
1、计算机DOS下的显示模式是多少?
答:
显示模式为字符模式:
80列、25行。
2、当前计算机Windows下的图形显示模式为多少?
答:
1024*76832位真彩75Hz
3、VGA彩色显示器屏幕上象素点的构成方式是怎样的?
答:
CRT图形显示是直接将整个屏幕分成m行,每行分成n个点,每个点称为一个象素。
4、当前计算机VGA显示系统的基本参数是多少?
5、Windows下VGA显示卡视频地址空间是多少?
答:
VGA显示卡视频地址空间:
内存000A0000-000BFFFF
内存E0000000-E7FFFFFF
内存EC000000-ECFFFFFF
端口03B0-03BB
端口03C0-03DF
6、Windows下VGA图形显示模式调节类型有哪些?
如何调节和设定?
答:
VGA图形显示模式调节类型有:
普通模式和高级模式
图形模式
所需显存容量
实际最低配置显
存容量
类型
640×480×16色
150K
256K
普通模式
800×600×16色
235K
256K
普通模式
1024×768×16色
384K
512K
普通模式
1280×1024×16色
640K
1M
高级模式
1600×1200×16色
938K
1M
高级模式
2048×2048×16色
2048K
2M
高级模式
320×200×256色
63K
256K
普通模式
640×400×256色
250K
256K
普通模式
640×480×256色
300K
512K
普通模式
800×600×256色
469K
512K
普通模式
1024×768×256色
768K
1M
普通模式
1280×1024×256色
1280K
2M
高级模式
1600×1200×256色
1875K
2M
高级模式
2048×2048×256色
4096K
4M
高级模式
320×200×32K色
125K
256K
普通模式
512×480×32K色
480K
256K
普通模式
640×480×32K色
600K
1M
普通模式
800×600×32K色
938K
1M
普通模式
1024×768×32K色
1536K
2M
高级模式
1280×1024×32K色
2560K
4M
高级模式
1600×1200×32K色
3750K
4M
高级模式
320×200×64K色
125K
256K
普通模式
512×480×64K色
480K
256K
普通模式
640×480×64K色
600K
1M
普通模式
800×600×64K色
938K
1M
普通模式
1024×768×64K色
1536K
2M
高级模式
1280×1024×64K色
2560K
4M
高级模式
1600×1200×64K色
3750K
4M
高级模式
320×200×16M色
200K
256K
普通模式
640×480×16M色
960K
1M
普通模式
800×600×16M色
1407K
2M
高级模式
1024×768×16M色
2304K
4M
高级模式
1280×1024×16M色
3840K
8M
高级模式
1600×1200×16M色
5625K
8M
高级模式
调节和设置:
(1)在桌面上右键,选择属性,如图所示:
(2)在上图中选择设置,如下图所示,在图中设置屏幕分辨率为1024×768,在颜色质量上选择32位真彩色。
实验二、C语言图形基础知识
一、上机实验目的
1.认识C语言程序中的图形参数和有关图形显示的基础知识;
2.学习C语言各种图形函数和图形命令及其使用。
3.学习并运行图形显示例程,掌握C语言图形编程基本常识。
二、实验设备及软件
1.计算机系统1套;
2.C语言教程软件1套;
3.C语言编程软件1套
4.课程多媒体软件1套;
三、上机实验内容
1.学习教程中有关图形的基本知识
图形模式初始化设置、颜色代码调用、图形显示基本功能等;
2.认识并掌握C语言图形函数及其使用
各种图形的C语言函数,如点、直线、矩形、圆、扇形、椭圆及多边形等;图形函数
的基本表示、含义以及基本应用;
3.初步认识C语言图形函数的编程与运行
在C语言环境下,运行图形程序示例,观察显示结果,分析程序结构和含义,学习C
语言图形函数的编程应用;
4.修改相关程序内容,观察运行结果,总结经验和结论分析。
四、上机实验报告
根据实验内容,在计算机上操作和观察、学习,并围绕上述内容写出实验结论及观察
报告,写出相应的运行程序实例和运行结果,以及修改内容和相应运行结果的变化,分析
其结论原因。
(不少于3个有代表性程序及运行、修改的结论)。
1.源程序:
#include
#include
#include
#include
intmain(void)
{
/*requestautodetection*/
intgdriver=DETECT,gmode,errorcode;
inti,maxx,maxy;
/*ourpolygonarray*/
intpoly[8];
/*initializegraphics,localvariables*/
initgraph(&gdriver,&gmode,"c:
\\tc\\bgi
");
/*readresultofinitialization*/
errorcode=graphresult();
if(errorcode!
=grOk)
/*anerroroccurred*/
{
printf("Graphicserror:
%s\n",
grapherrormsg(errorcode));
printf("Pressanykeytohalt:
");
getch();
exit
(1);
/*terminatewithanerrorcode*/
}
maxx=getmaxx();
maxy=getmaxy();
poly[0]=20;/*1stvertext*/
poly[1]=maxy/2;
poly[2]=maxx-20;/*2nd*/
poly[3]=20;
poly[4]=maxx-50;/*3rd*/
poly[5]=maxy-20;
/*
4thvertex.fillpolyautomatically
closesthepolygon.
*/
poly[6]=maxx/2;
poly[7]=maxy/2;
/*loopthroughthefillpatterns*/
for(i=EMPTY_FILL;i{
/*setfillpattern*/
setfillstyle(i,getmaxcolor());
/*drawafilledpolygon*/
fillpoly(4,poly);
getch();
}
/*cleanup*/
closegraph();
return0;
}
_
修改后:
#include
#include
#include
#include
intmain(void)
{
/*requestautodetection*/
intgdriver=DETECT,gmode,errorcode;
inti,maxx,maxy;
/*ourpolygonarray*/
intpoly[8];
/*initializegraphics,localvariables*/
initgraph(&gdriver,&gmode,"c:
\\tc\\bgi");
/*readresultofinitialization*/
errorcode=graphresult();
if(errorcode!
=grOk)
/*anerroroccurred*/
{
printf("Graphicserror:
%s\n",
grapherrormsg(errorcode));
printf("Pressanykeytohalt:
");
getch();
exit
(1);
/*terminatewithanerrorcode*/
}
maxx=450;
maxy=320;
poly[0]=30;/*1stvertext*/
poly[1]=maxy/2;
poly[2]=maxx-20;/*2nd*/
poly[3]=20;
poly[4]=maxx-30;/*3rd*/
poly[5]=maxy-20;
/*
4thvertex.fillpolyautomatically
closesthepolygon.
*/
poly[6]=maxx/2;
poly[7]=maxy/2;
/*loopthroughthefillpatterns*/
for(i=EMPTY_FILL;i<3;i++)
{
/*setfillpattern*/
setfillstyle(i,1);
/*drawafilledpolygon*/
fillpoly(4,poly);
getch();
}
/*cleanup*/
closegraph();
return0;
}
_
2.源程序:
#include
#include
#include
#include
intmain(void)
{
/*requestautodetection*/
intgdriver=DETECT,gmode,errorcode;
intmidx,midy;
intstangle=45,endangle=135,radius=100;
/*initializegraphicsandlocalvariables*/
initgraph(&gdriver,&gmode,"c:
\\tc\\bgi");
/*readresultofinitialization*/
errorcode=graphresult();
if(errorcode!
=grOk)/*anerroroccurred*/
{
printf("Graphicserror:
%s\n",grapherrormsg(errorcode));
printf("Pressanykeytohalt:
");
getch();
exit
(1);/*terminatewithanerrorcode*/
}
midx=getmaxx()/2;
midy=getmaxy()/2;
/*setfillstyleanddrawapieslice*/
setfillstyle(EMPTY_FILL,getmaxcolor());
pieslice(midx,midy,stangle,endangle,radius);
/*cleanup*/
getch();
closegraph();
return0;
}
_
修改后:
#include
#include
#include
#include
intmain(void)
{
/*requestautodetection*/
intgdriver=DETECT,gmode,errorcode;
intmidx,midy;
intstangle=45,endangle=135,radius=100;
/*initializegraphicsandlocalvariables*/
initgraph(&gdriver,&gmode,"c:
\\tc\\bgi");
/*readresultofinitialization*/
errorcode=graphresult();
if(errorcode!
=grOk)/*anerroroccurred*/
{
printf("Graphicserror:
%s\n",grapherrormsg(errorcode));
printf("Pressanykeytohalt:
");
getch();
exit
(1);/*terminatewithanerrorcode*/
}
midx=100;
midy=200;
/*setfillstyleanddrawapieslice*/
setfillstyle(EMPTY_FILL,getmaxcolor());
pieslice(midx,midy,stangle,endangle,radius);
/*cleanup*/
getch();
closegraph();
return0;
}
_
3.源程序:
#include
#include
intmain()
{
inti,gdriver,gmode,size;
void*buf;
gdriver=DETECT;
initgraph(&gdriver,&gmode,"c:
\\tc\\bgi");
setbkcolor(BLUE);
cleardevice();
setcolor(LIGHTRED);
setlinestyle(0,0,1);
setfillstyle(1,10);
circle(100,200,30);
floodfill(100,200,12);
size=imagesize(69,169,131,231);
buf=malloc(size);
getimage(69,169,131,231,buf);
putimage(500,269,buf,COPY_PUT);
for(i=0;i<185;i++){
putimage(70+i,170,buf,COPY_PUT);
putimage(500-i,170,buf,COPY_PUT);
}
for(i=0;i<185;i++){
putimage(255-i,170,buf,COPY_PUT);
putimage(315+i,170,buf,COPY_PUT);
}
getch();
closegraph();
}
_
修改后:
#include
#include
intmain()
{
inti,gdriver,gmode,size;
void*buf;
gdriver=DETECT;
initgraph(&gdriver,&gmode,"c:
\\tc\\bgi");
setbkcolor(BLUE);
cleardevice();
setcolor(LIGHTRED);
setlinestyle(0,0,1);
setfillstyle(1,10);
circle(300,100,100);
floodfill(100,200,12);
size=imagesize(69,169,131,231);
buf=malloc(size);
getimage(69,169,131,231,buf);
putimage(500,269,buf,COPY_PUT);
for(i=0;i<185;i++){
putimage(70+i,170,buf,COPY_PUT);
putimage(500-i,170,buf,COPY_PUT);
}
for(i=0;i<185;i++){
putimage(255-i,170,buf,COPY_PUT);
putimage(315+i,170,buf,COPY_PUT);
}
getch();
closegraph();
}
_
4.源程序:
#include
#include
#include
#include
intmain(void)
{
/*requestautodetection*/
intgdriver=DETECT,gmode,errorcode;
intmaxx,maxy;
/*initializegraphics,localvariables*/
initgraph(&gdriver,&gmode,"");
/*readresultofinitialization*/
errorcode=graphresult();
if(errorcode!
=grOk)
/*anerroroccurred*/
{
printf("Graphicserror:
%s\n",
grapherrormsg(errorcode));
printf("Pressanykeytohalt:
");
getch();
exit
(1);
/*terminatewithanerrorcode*/
}
maxx=getmaxx();
maxy=getmaxy();
/*selectdrawingcolor*/
setcolor(getmaxcolor());
/*selectfillcolor*/
setfillstyle(SOLID_FILL,getmaxcolor());
/*drawaborderaroundthescreen*/
rectangle(0,0,maxx,maxy);
/*drawsomecircles*/
circle(maxx/3,maxy/2,50);
circle(maxx/2,20,100);
circle(maxx-20,maxy-50,75);
circle(20,maxy-20,25);
/*waitforakey*/
getch();
/*fillinboundedregion*/
floodfill(2,2,getmaxcolor());
/*cleanup*/
getch();
closegraph();
return0;
}
_
修改后:
#include
#include
#include
#include
intmai