- 相關(guān)推薦
VGA16色模式下的圖像漫游
VGA是微機(jī)顯示的廉價(jià)適配器,因而在其上實(shí)現(xiàn)圖形圖像處理的成本較低。在目前國內(nèi)流行的C語言中,均提供了基本的作圖函數(shù),如Borlandc C 、Turbo C和MicrosoftC。但還缺少一個(gè)最基本的圖形圖像處理功能-屏幕漫游功能。本文將討論在VGA16色模式下實(shí)現(xiàn)屏幕圖像漫游的方法,并給出C語言的程序供讀者參考。
一、基本構(gòu)思
為了實(shí)現(xiàn)漫游的功能,首先將想像中的大幅圖像分成N×N塊(每塊應(yīng)小于屏幕的分辨率)相同大小的區(qū)域,然后逐次顯示在屏幕上并存放到一個(gè)文件中。這樣就完成了漫游圖的制作?梢栽O(shè)想,文件提供了一個(gè)無限分辨率的虛擬屏幕,存儲(chǔ)著大幅圖像數(shù)據(jù)。
在調(diào)用漫游圖時(shí),將存放在文件中的圖像數(shù)據(jù)的一部分顯示在屏幕上,當(dāng)用鍵盤或鼠標(biāo)控制圖像漫游時(shí),程序首先將屏幕上的圖像移動(dòng)一定的距離,這一過程實(shí)質(zhì)是硬件漫游。當(dāng)屏幕圖像移動(dòng)后,留出的空白位置則從文件中調(diào)出數(shù)據(jù)顯示到屏幕上,這一步實(shí)質(zhì)為軟件漫游。
二、存圖文件的數(shù)據(jù)結(jié)構(gòu)
假設(shè)在文件ZOOM.SCR中存儲(chǔ)了2×2個(gè)VGA(640×480×16色模式)窗口畫面,窗口的范圍如圖1所示。其左上角和右下角的坐標(biāo)分別為(XP1,YP1)、(XP2,YP2),將來就在這一窗口范圍內(nèi)進(jìn)行漫游。
@@T5S11100.GIF;圖1@@
假設(shè)存圖時(shí)每個(gè)窗口大小一樣,高度為d,寬度為w。存圖時(shí)漫游窗口的寬度與起始坐標(biāo)均為8的整數(shù)倍,這樣便于處理。四個(gè)窗口的排號(hào)順序如圖2所示:
@@T5S11101.GIF;圖2@@
在此是實(shí)現(xiàn)2×2畫面的漫游功能,用戶可根據(jù)需要實(shí)現(xiàn)n×n個(gè)畫面的漫游,其方法相同。
三、基本功能函數(shù)
實(shí)現(xiàn)漫游功能主要由以下幾個(gè)函數(shù)實(shí)現(xiàn)
savewin——存圖函數(shù),將屏幕窗口函數(shù)存入文件。
Loadwin——調(diào)圖函數(shù),由文件將圖像數(shù)據(jù)調(diào)入屏幕。
scroll_x——X軸向漫游函數(shù)。
scroll_y——Y軸向漫游函數(shù)。
1.常數(shù)定義及函數(shù)說明
/*文件名:scroll.h* /
# define XP1 16 /* 窗口左上角坐標(biāo) */
# define YP1 32
# define XP2 591 /* 窗口右下角坐標(biāo)*/
# define YP2 415
# define LEFT 0x4b
# define RIGHT 0x4b
# define UP 0x48
# define DOWN 0x50
# define INDEXREG1 0x3CE /* VGA圖形控制器索引寄存器 */
# define VALREG1 0x3CF /* VGA圖形控制器數(shù)據(jù)寄存器 */
# define INDEXREG2 0x3C4 /* VGA定序器索引寄存器*/
# define VALREG2 0x3C5 /* VGA定序器數(shù)據(jù)寄存器 */
·# define VGABASE 0xA0000000L /* VGA 640*480 16色模式起始地址 */
void savewin (char *,int,int,int,int,int,int);
void Loadwin (char *,int,int,int,int,int,int,int);
void scroll_x (int,int,int,int,int);
void scroll_y (int,int,int,int,int)
2、功能函數(shù)
/* 文件名:function.cpp*/
# include <stdio.h
# include <stdlib.h>
# include <conio.h>
# include "scroll.h"
/*制作漫游圖時(shí)存入窗口函數(shù),
fname存放漫游圖文件;
(xleft,ytop)在屏幕上窗口左上角坐標(biāo);
(xright,ybuttom)在屏幕上窗口左上角坐標(biāo);
number圖號(hào)(0-nxy×nxy-1)
nxy nxy*nxy拼圖*/
void savewin(char *fname,int xleft,int ytop,int xright,int ybuttom,int nu
mber,int nxy)
{
FILE *fp;
int i,width,height;
register j,k;
Long temp,offset,offset1;
char far *base;
widt
[1] [2] [3] [4]
【VGA16色模式下的圖像漫游】相關(guān)文章:
下色04-29
基于模式特征的圖像壓縮算法05-01
淺談圖形圖像處理課程的教學(xué)模式04-30
漢字圖像模式識(shí)別的早期知覺過程04-28
互動(dòng)教學(xué)模式下的詞匯教學(xué)05-02
新課標(biāo)背景下的教學(xué)模式構(gòu)建04-28
網(wǎng)絡(luò)環(huán)境下教學(xué)模式探索05-01
故障模式下的空間交會(huì)防撞設(shè)計(jì)04-27
文化模式下的自我意識(shí)研究04-29