资源描述:
《图像漫游论文 .doc》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、图像漫游论文图像漫游论文图像漫游论文图像漫游论文图像漫游论文图像漫游论文图像漫游论文图像漫游论文图像漫游论文图像漫游论文图像漫游论文图像漫游论文图像漫游论文 VGA是微机显示的廉价适配器,因而在其上实现图形图像处理的成本较低。在目前国内流行的C语言中,均提供了基本的作图函数,如BorlandcC++、TurboC和MicrosoftC。但还缺少一个最基本的图形图像处理功能-屏幕漫游功能。本文将讨论在VGA16色模式下实现屏幕图像漫游的方法,并给出C语言的程序供读者参考。 一、基本构思 为了实现漫游的功能,首先将想像
2、中的大幅图像分成N×N块(每块应小于屏幕的分辨率)相同大小的区域,然后逐次显示在屏幕上并存放到一个文件中。这样就完成了漫游图的制作。可以设想,文件提供了一个无限分辨率的虚拟屏幕,存储着大幅图像数据。 在调用漫游图时,将存放在文件中的图像数据的一部分显示在屏幕上,当用键盘或鼠标控制图像漫游时,程序首先将屏幕上的图像移动一定的距离,这一过程实质是硬件漫游。当屏幕图像移动后,留出的空白位置则从文件中调出数据显示到屏幕上,这一步实质为软件漫游。 二、存图文件的数据结构 假设在文件中存储了2×2个VGA(640×480×16
3、色模式)窗口画面,窗口的范围如图1所示。其左上角和右下角的坐标分别为(XP1,YP1)、(XP2,YP2),将来就在这一窗口范围内进行漫游。 @@;图1@@ 假设存图时每个窗口大小一样,高度为d,宽度为w。存图时漫游窗口的宽度与起始坐标均为8的整数倍,这样便于处理。四个窗口的排号顺序如图2所示: @@;图2@@ 在此是实现2×2画面的漫游功能,用户可根据需要实现n×n个画面的漫游,其方法相同。 三、基本功能函数 实现漫游功能主要由以下几个函数实现 savewin——存图函数,将屏幕窗口函数存入文件。 Lo
4、adwin——调图函数,由文件将图像数据调入屏幕。 scroll_x——X轴向漫游函数。 scroll_y——Y轴向漫游函数。 1.常数定义及函数说明 /*文件名:*+/ #defineXP116/*窗口左上角坐标*/ #defineYP132 #defineXP2591/*窗口右下角坐标*/ #defineYP2415 #defineLEFT0x4b #defineRIGHT0x4b #defineUP0x48 #defineDOWN0x50 #defineINDEXREG10x3CE/*VG
5、A图形控制器索引寄存器*/ #defineVALREG10x3CF/*VGA图形控制器数据寄存器*/ #defineINDEXREG20x3C4/*VGA定序器索引寄存器*/ #defineVALREG20x3C5/*VGA定序器数据寄存器*/ ·#defineVGABASE0xA0000000L/*VGA640*48016色模式起始地址*/ voidsavewin(char*,int,int,int,int,int,int); voidLoadwin(char*,int,int,int,int,int,in
6、t,int); voidscroll_x(int,int,int,int,int); voidscroll_y(int,int,int,int,int) 2、功能函数 /*文件名:*/ #include #include #include #include”“ /*制作漫游图时存入窗口函数, fname存放漫游图文件; (xleft,ytop)在屏幕上窗口左上角坐标; (xright,ybuttom)在屏幕上窗口左上角坐标; number图号(0-nxy×nxy-1) nxynxy*nxy拼图
7、*/ voidsavewin(char*fname,intxleft,intytop,intxright,intybuttom,intnu mber,intnxy) { FILE*fp; inti,width,height; registerj,k; Longtemp,offset,offset1; charfar*base; width=(xright-xleft+1)/8; height=ybuttom-ytop+1; fp=fopen(fname,”rb+”); offset=(Long)(
8、number-number%nxy)*(long)width*(long)height; offset1=offset; for(i=0;i outportb(INDEXREG1,4); outportb(VALREG1,i); base=(charfar)*VGABASE+(long)(ytop*80)+