多重透明無閃爍微機動畫設(shè)計_第1頁
多重透明無閃爍微機動畫設(shè)計_第2頁
多重透明無閃爍微機動畫設(shè)計_第3頁
免費預(yù)覽已結(jié)束,剩余1頁可下載查看

下載本文檔

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

文檔簡介

多重透明無閃爍微機動畫設(shè)計

摘要該文闡述了一種利用EGA/VGA上的位頁面結(jié)構(gòu)及彩色調(diào)色板來開發(fā)一個可以處理數(shù)個快速圖像重疊及優(yōu)美畫面質(zhì)量的動畫結(jié)構(gòu)。利用這種技術(shù)不僅會產(chǎn)生多重透明圖像效應(yīng),而且可用最快的速度畫圖。動畫設(shè)計一直是微型計算機編程人員的熱門話題,有不少編程人員利用C語言系列中的gentimage()和putimage()函數(shù),在屏幕上不斷畫、擦,產(chǎn)生動畫效果。這樣產(chǎn)生的動畫有較強的閃爍感,而且動畫只能在一致的背景顏色下產(chǎn)生。有些同志采用直接視屏緩沖區(qū)讀、寫,這對16色的640×480色圖像,要同時處理分散在4個彩色頁面中的圖像,既復(fù)雜又費時,而且當(dāng)圖像相交時很難避免相互影響的問題,因為這些部分在緩沖區(qū)中占用了相同的位。由于EGA/VGA的4個頁面可單獨被讀出及寫入,如果將圖像存于單一頁面,這樣就可以免去EGA/VGA中處理分散于各頁面中圖像的煩人問題??梢院苋菀滋幚?組圖像,而且在不同頁面中的圖像不會互相干擾,但這樣也產(chǎn)生了另一個問題:由于不同頁面中位的混合產(chǎn)生了新的色彩,相交部分看起來并不屬于任何圖像。我們所希望的是一個圖在另一個圖的前面,并且由前圖可以看到后圖的透明色。通過修改彩色調(diào)色板的值,完全可以達到上述效果。實際上,來自各頁面4位混合的點的顏色是由這4位所指的調(diào)色板值決定的。假設(shè)該點是從4色中選一色,而不是從16色中選一色,如果由彩色頁面0來的位為1,則選擇色彩0。如果由彩色頁面1來的位為1,則選擇色彩1。如果由彩色頁面2來的位為1,則選擇色彩2。如果由彩色頁面3來的位為1,則選擇色彩3。當(dāng)不止一個位為1時,只來自最小號碼頁面的位決定顏色,其它頁面的位則忽略不用。若每個位均為0,則選擇背景顏色。我們所做的就是重新控制調(diào)色板寄存器使得來自最高次序頁面且值為1的位有色彩決定權(quán)。附表列出了上述調(diào)色板值的設(shè)置。這樣我們將可以得到4個顏色及一個背景色,而且也會定出一個簡單的圖像次序,頁面0中的圖像在其它頁面之前,頁面1中的圖像在頁面2、3圖像之前,依此類推,而且還有一種透明性,可以由前面圖像的缺口或邊緣看到背后圖像。最重要的是這符合不同圖像存于不同頁面的標(biāo)準,可以快速處理圖像,從而消除動畫閃爍的感覺。下面的程序說明位頁面的動畫,它是利用WPS中SPT產(chǎn)生幾幅.SPT圖像,分別裝入不同位面,修改調(diào)色板值產(chǎn)生的重疊透明的動畫效果。讀者可以看到在前景(中文字幕)不動的情形下,背景(一幅較大的太空夜圖)緩緩移動,給人一種全新的動畫感覺。@@T5S12900.GIF;附表調(diào)色板值設(shè)置@@其實,只要對上面的想法稍作改進,便能產(chǎn)生更好效果的動畫。我們可以只用一、二個頁面來作動畫,空出其它的頁面處理色彩問題。例如:利用彩色頁面3作動畫,而用彩色頁面0、1、2來提供8種色彩的圖像。讀者不妨親自設(shè)計一下調(diào)色板的值。#include<stdio.h>#include<process.h>#include<alloc.h>#include<mem.h>#include<graphics.h>#include<dos.h>#include<conio.h>typedefenum{RIGHT,LEFT,UP,DOWN}dir-move;intmov-spt(unsignedchar*filename,dir-movedir,intstartx,intstarty,intpage,intforg);voidmain(){FILE*fp;structpalettetypepal,pall;unsignedcharname[30];inti,gdriver=DETECT,gmode,errorcode;initgraph(&gdriver,&gmode,"");errorcode=graphresult();if(errorcode!=gr0k)/*anerroroccurred*/{printf("Graphicserror:%s\n",grapherrormsg(errorcode));printf("pressanykeytohalt:");getch();exit(1);/*returnwitherrorcode*/}getpalette(&pal);pall.size=16;for(i=0;i<16;i++)pall.colors[i]=LIGHTBLUE;setallpalette(&pall);move-spt("f2.spt",UP,0,0,1,RED);move-spt("f3.spt",DOWN,0,0,2,YELLOW);move-spt("f4.spt",LEFT,0,0,3,BLUE);move-spt("f5.spt",RIGHT,0,0,4,7);getch();setallpalette(&pal);outpw(0x3c4,0x0f02);closegraph();}intmove-spt(unsignedchar*filename,dir-movedir,intstartx,intstarty,intpage,intforg){elsepall.colors[i]=pal.colors[i];}setallpalette(&pall);if((mirror=(unsignedcharfar*)farmalloc(sizeof(unsignedchar)*384001))==NULL){printf("Memoryallocationerror!\n");exit(1);}memset(mirror,0,384001);fseek(fp,341,SEEK-SET);fread(&wid,sizeof(int),1,fp);fread(&hei,sizeof(int),1,fp);if(wid>640||(hei>480)){printf("Sorry.Imagetoolarge.\n");exit(1);}fseek(fp,641,SEEK-SET);if((startx+wid)>640)startx=640-wid;if((starty+hei)>480)starty=480-hei;for(i=0;i<hei;i++){offset=(i+starty)*80+startx/8;fread(buffer,sizeof(unsignedchar);wid/8,fp);for(j=0;j<wid/8;j++)buffer[j]=buffer[j]^0xff;movmem(buffer,(mirror+offset),wid/8);}outp(0x3c4,0x02);outp(0x3c5,bit);switch(dir){caseRIGHT;for(col=0;col<640;col+=2){tmp=(640-col)/8;for(i=0;i<480;i++){offset=i*80;offset=i*80+tmp;vodeo=(unsignedcharfar*)MK-FP(0xa000,offset1);movmem((mirror+offset),video,(col)/8);}}break;caseLEFT;for(col=639;col>=0;col-=3){for(i=0;i<480;i++){offset1=(col+7)/8+i*80;offset=i*80;video=(unsignedcharfar*)MK-FP(0xa000,offset1);movmem((void*)(mirror+offset),(void*)video,(640-col)/8);}}break;caseUP;for(row=479;row>=0;row-=1){for(i=0;i<480-row;i++){offset1=row*80;offset=(479-row)*80;video=(unsignedcharfar*)MK-FP(0xa000,offset1);movmem((mirror+offset),video,80);}}br

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論