版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、VGA16色模式下的圖像漫游(一)VGA是微機(jī)顯示的廉價(jià)適配器,因而在其上實(shí)現(xiàn)圖形圖像處理的成本較 低。在目前國(guó)內(nèi) 流行的 C 語(yǔ)言中 ,均提供了基本的 作圖函數(shù) ,如 BorlandcC+ TurboC和MicrosoftC。但還缺少一個(gè)最基本的圖形圖像 處理功能-屏幕漫游功能。本文將討論在VGA16色模式下實(shí)現(xiàn)屏幕圖像 漫游的方法,并給出C語(yǔ)言的程序供讀者參考。一、基本構(gòu)思為了實(shí)現(xiàn)漫游的功能,首先將想像中的大幅圖像分成 NXN塊(每塊應(yīng)小 于屏幕的分辨率 )相同大小的區(qū)域 ,然后逐次顯示在屏幕上并存放到一 個(gè)文件中。這樣就完成了漫游圖的制作??梢栽O(shè)想 ,文件提供了一個(gè)無(wú) 限分辨率的虛擬屏幕
2、 ,存儲(chǔ)著大幅圖像數(shù)據(jù)。在調(diào)用漫游圖時(shí) ,將存放在文件中的圖像數(shù)據(jù)的一部分顯示在屏幕上,當(dāng)用鍵盤或鼠標(biāo)控制圖像漫游時(shí) ,程序首先將屏幕上的圖像移動(dòng)一定的 距離,這一過(guò)程實(shí)質(zhì)是硬件漫游。 當(dāng)屏幕圖像移動(dòng)后 ,留出的空白位置則 從文件中調(diào)出數(shù)據(jù)顯示到屏幕上 , 這一步實(shí)質(zhì)為軟件漫游。二、存圖文件的數(shù)據(jù)結(jié)構(gòu)假設(shè)在文件ZOOM.SC中存儲(chǔ)了 2X2個(gè)VGA(64(X480X 1色模式)窗口畫 面,窗口的范圍如圖 1 所示。其左上角和右下角的坐標(biāo)分別為 (XP1,YP1) (XP2, YP2將來(lái)就在這一窗口范圍內(nèi)進(jìn)行漫游。T5S11100.GI圖 1假設(shè)存圖時(shí)每個(gè)窗口大小一樣,高度為d,寬度為w。存圖時(shí)
3、漫游窗口的寬度與起始坐標(biāo)均為 8 的整數(shù)倍 ,這樣便于處理。四個(gè)窗口的排號(hào)順序 如圖 2 所示:T5S11101.GI圖 2在此是實(shí)現(xiàn)2X2畫面的漫游功能,用戶可根據(jù)需要實(shí)現(xiàn)nXn個(gè)畫面的漫 游,其方法相同。三、基本功能函數(shù)實(shí)現(xiàn)漫游功能主要由以下幾個(gè)函數(shù)實(shí)現(xiàn)savewin存圖函數(shù),將屏幕窗口函數(shù)存入文件。Loadwin調(diào)圖函數(shù),由文件將圖像數(shù)據(jù)調(diào)入屏幕。scroll_xX軸向漫游函數(shù)。scroll_yY軸向漫游函數(shù)。1.常數(shù)定義及函數(shù)說(shuō)明/* 文件名: scroll.h*+/#defineXP116/*窗口左上角坐標(biāo)*/#defineYP132#defineXP2591/*窗口右下角坐標(biāo)*/
4、#defineYP2415#defineLEFT0x4b #defineRIGHT0x4b#defineUP0x48 #defineDOWN0x50#definelNDEXREG10x3CE/*VG圖形控制器索引寄存器*/#defineVALREG10x3CF/*VG圖形控制器數(shù)據(jù)寄存器*/#definelNDEXREG20x3C4/*VG定序器索引寄存器 */#defineVALREG20x3C5/*VG定序器數(shù)據(jù)寄存器 */#defineVGABASE0xA0000000L/*VGA640*4801 色模式起始地址 */ voidsavewin(char*,int,int,int,int,
5、int,int);voidLoadwin(char*,int,int,int,int,int,int,int);voidscroll_x(int,int,int,int,int);voidscroll_y(int,int,int,int,int)2、功能函數(shù)/* 文件名: function.cpp*/#include#include#include#includescroll.h/* 制作漫游圖時(shí)存入窗口函數(shù) ,fname 存放漫游圖文件;(xleft,ytop)在屏幕上窗口左上角坐標(biāo);(xright,ybuttom)在屏幕上窗口左上角坐標(biāo);number 圖號(hào)(0-nxy x nxy-1)nx
6、ynxy*nxy 拼圖 */ 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)(number-number%nxy)*(long)width*(long)height; offs
7、et1=offset;for(i=0;ioutportb(INDEXREG1,4);outportb(VALREG1,i); base=(charfar)*VGABASE+(long)(ytop*80)+(long)(xleft/8); offset=(long)(i*nxy*nxy)*(long)width*(long)height+(long)(number%nxy)*(l ong)width+offset1;for(j=0;jfseek(fp,offset,SEEK_SET);fwrite(base,1,width,fp);offset=offset+(long)(nxy*width);
8、base=base+80L;fclose(fp);outportb(INDEXREG1,0);/* 向屏幕裝入漫游圖窗口函數(shù) ,(xO,yO)裝入屏幕起始坐標(biāo);fname 存放漫游圖文件名;(xleft,ytop)在fname中虛擬窗口左上角坐標(biāo);(xright,ybuttom) 在 fname 中虛擬窗口右下角坐標(biāo);nxynxy*nxy 拼圖 */ voidLoadwin(char*fname,intxo,inty0,intxleft,intytop,intxright,int ybuttom,intnxy)FILE*fp;registerintj,i,n=8,width,height;ch
9、arfar*base,*vbase;registerlongoffset; fp=fopen(fname,rb);width=(xright-xleft+1)/8;height=ybuttom-ytop+1;for(i=3;i0;i-) outportb(INDEXREG1,5); outportb(VALREG1,0); outportb(INDEXREG2,2); outportb(VALREG2,n);base=(charfar*)VGABASE+(long)yOx 80L+(long)(x0/8);offset=(long)(i*nxy*nxy)*(long)(YP2-YP1+1)*(
10、long)(XP2-XP1+1)/8)+(long)(xleft/8)+(long)(ytop*nxy)*(long)(XP2-XP1+1)/8); for(j=0;jfseek(fp,offset,SEEK_SET);fread(base,1,width,fp);offset=offset+(long)nxy*(long)(XP2-XP1+1)/8);base=base+80L;n=n/2;fclose(fp);outportb(VALREG2,oxff);outportb(INDEXREG2,oxf);outportb(INDEXREG1,0);/*Y-方向漫游函數(shù)(xleft,ytop,xright,ybuttom) 定義漫游窗口;dydy向下漫游(以象素為單位)*/voidscroll-y(intxleft,intytop,intxright,intybuttom,intdy) intwidth
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 水冷卻器的課程設(shè)計(jì)
- 安卓課程設(shè)計(jì)致謝
- 煙頭回收課程設(shè)計(jì)
- 藥事管理課程設(shè)計(jì)
- 電橋課程設(shè)計(jì)總結(jié)
- 運(yùn)動(dòng)健身業(yè)務(wù)員服務(wù)協(xié)助總結(jié)
- 聊天應(yīng)用開發(fā)課程設(shè)計(jì)
- 小區(qū)消防安全檢查培訓(xùn)
- IT行業(yè)美工工作總結(jié)
- 飲料行業(yè)技術(shù)工作分析
- 醫(yī)院眼科醫(yī)院雷火灸操作評(píng)分標(biāo)準(zhǔn)
- 二年級(jí)口算題卡
- 畢業(yè)設(shè)計(jì)工程造價(jià)預(yù)算書
- 幼兒園課件-神奇的中草藥
- 起重機(jī)零配件(易損件)清單
- 錐坡工程量計(jì)算
- 植物園設(shè)計(jì)規(guī)范
- 北京保險(xiǎn)中介行業(yè)營(yíng)銷員增員及流動(dòng)自律公約
- 深圳市建設(shè)工程施工圍擋圖集(試行版_下半部分).pdf
- 熱水器3c安全試驗(yàn)報(bào)告及第三方檢測(cè)報(bào)告dsf65mx ts tx ws wx ys yx ms
- 南洋電工GSB1A型16錠高速編織機(jī)使用說(shuō)明書
評(píng)論
0/150
提交評(píng)論