在TVGA上實現(xiàn)全屏幕動畫_第1頁
在TVGA上實現(xiàn)全屏幕動畫_第2頁
在TVGA上實現(xiàn)全屏幕動畫_第3頁
在TVGA上實現(xiàn)全屏幕動畫_第4頁
在TVGA上實現(xiàn)全屏幕動畫_第5頁
已閱讀5頁,還剩1頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、在TVGA上實現(xiàn)全屏幕動畫首先設(shè)置TVGA卡使其工作在0X5d方式下,屏幕分辨率是640480256色。然后重新構(gòu)造調(diào)色板(RemapPalette(),使其適于顯示256灰階的圖像。由于TVGA卡的顏色寄存器使用18位存儲模式,即R、G、B分量各占6位,而要顯示灰度圖像R、G、B分量必須賦予相同的值,所以就只能顯示區(qū)分26=64灰階的圖像。不過,實驗表明人眼已無法區(qū)分64灰階與256灰階圖像的差別。因此,在構(gòu)造調(diào)色板時,03索引值對應(yīng)的R、G、B分量值都為0,47索引值對應(yīng)的R、G、B分量值都為1,依次類推,這樣就可以正確顯示一幅256灰階的圖像。以下是動畫播放序列運動圖像完整的源代碼(AV

2、D.C)。為連續(xù)顯示一序列圖像,先將序列圖像的數(shù)目(如20)、存放圖像數(shù)據(jù)文件的路徑(f:zyf)、圖像文件的名稱(如z1.img,z2.img,)錄入一文本文件(如imggroup.lst),運行程序時只需鍵入AVD imggroup.lst即可。源程序中顯示每幅圖像的代碼部分采用嵌入?yún)R編語言編寫,以得到較高的顯示速度。在程序運行過程中,按下空格鍵暫停;連擊空格鍵實現(xiàn)單幀播放;按下任意其它鍵恢復(fù)連續(xù)播放;按下退出鍵(Escape)退回DOS。在程序設(shè)計時,為避免在一個循環(huán)結(jié)束過渡到下一個循環(huán)開始時將要從序列的最后一幅圖像切換到第一幅圖像,因為這時由于圖像運動的不連續(xù)性將產(chǎn)生突變,以至屏幕顯示

3、有抖動感或閃爍感,所以筆者采用了第一個循環(huán)正向播放,第二個循環(huán)反向播放(即正反相間)的方案。如果讀者只希望正向播放,只須刪除源程序中標(biāo)有“/$”的四條語句行即可。編譯運行環(huán)境:本程序用MS C6.0編譯通過,編譯時請使用命令行參數(shù)/STACK:20480;圖像數(shù)據(jù)文件來自大恒公司的VP32圖像采集板(512512256灰階)。#include #include #include #include #include #include #include #define IMGGRP 30 /Image Number in a Cycle Showing#define ESCAPE 27 /Stop

4、 Showing and Exit#define SPACE 32 /Step Show-Hit Space Bar & One by One Showingvoid RemapPalette(void);void main (int argc,char *argv)static char grpflnmIMGGRP80;char path80,flnm80,bindfn80,arg5;char fnch2=0;char ch-imgnum5;int i,i1,i2,i12,ii,imgnum=IMGGRP;int dispimgs,keyin,StepShow=0;unsigned shor

5、t int VSEG;union REGS inregs,outregs;FILE *fp;unsigned short int row=480,col=512;unsigned char fb512;int m-b=0;clock-t cstart,cend; /* For clock */unsigned short int FH; / File Handleprintf(n * GROUP IMAGES ANIMATEDLY SHOWING * n);if(argc1)strcpy(flnm,argv1);elseprintf(n Input the Image Group file n

6、ame .lst:);gets(flnm);REDISP:if(!strchr(flnm,.)strcat(flnm,.lst);if(fp=fopen(flnm,rt)=NULL)printf(n Open file failure! aan);printf(n Please Check following files whether exist:);printf(n%s,flnm);printf(nn Note:The file extension name is appended automatically,);printf(n such as .lst!);exit(1);inregs

7、.x.ax=0x005d; / Set TVGA Mode:640x480x256 levelsint86(0x10,&inregs,&outregs);RemapPalette(); / Remap all Palettecstart= clock(); /* Use clock for timing to hundredths of seconds */strcpy(ch-imgnum,0);for(;) / Read image number in groupfread(fnch,sizeof(char),1,fp);if(int)fnch0=10) break;strcat(ch-im

8、gnum,fnch);imgnum=atoi(ch-imgnum);strcpy(path,0);for(;) / Read image path in groupfread(fnch,sizeof(char),1,fp);if(int)fnch0=10) break;strcat(path,fnch);for(i=0;i<imgnum;i+) / Read image name in groupstrcpy(grpflnmi,0);for(;)fread(fnch,sizeof(char),1,fp);if(int)fnch0=10) break;strcat (grpflnmi,fn

9、ch);keyin=0;StepShow=0; / Continuous Showing defaultlydispimgs=0;i1=0; i2=imgnum-1; i12=1;for(;) / SHOW IMAGES-ANTMATE PICTURE STUDIO/ REPEAT CYCLE FOREVERfor(i=i1;i1) goto ENDP;printf(n Display Another Image Group(Y/N)?);gets(arg);if(!strcmp(arg,Y)!strcmp(arg,y)printf(n Input image file name:);gets

10、(flnm);goto REDISP;ENDP:-SETVIDEOMODE(-TEXTC80);printf( Show %5d images;Spend %4.2f seconds.n,dispimgs,(float)cend-cstart)/CLK-TCK);void RemapPalette(void)register int i,j;union REGS inregs,outregs;for(j=0;j64;i+) /Remap TVGA Palettefor(i=0;i4;j+)inregs.x.ax=0x1010;inregs.x.bx=(unsigned char)(4*i+j)

11、; /Index valueinregs.h.ch=(unsigned char)i; /Green value R,G,B=0-63inregs.h.cl=(unsigned char)i; /Blue valueinregs.h.dh=(unsigned char)i;/Red valueint86(0x10,&inregs,&outregs);圖像組文件(如imggroup.lst)錄入格式(每項占一行,編輯器用MS C6.0的PWB即可):3f:zyfz1.imgz2.imgz3.img如讀者想進(jìn)一步提高顯示速度,方案如下:1.窗口顯示:只顯示感興趣的目標(biāo)區(qū)域;2.虛擬盤:把序列圖像文件拷貝到虛擬

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論