軟件封面特技顯示研究論文_第1頁
軟件封面特技顯示研究論文_第2頁
軟件封面特技顯示研究論文_第3頁
軟件封面特技顯示研究論文_第4頁
軟件封面特技顯示研究論文_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、軟件封面特技顯示研究論文 軟件編制人員都希望自己的軟件能有一個(gè)漂亮的封面,如果能將圖形動(dòng)畫技術(shù)應(yīng)用到封面設(shè)計(jì)中,無疑會(huì)使封面更加美觀醒目,為應(yīng)用軟件錦上添花。 本文提供了一種封面設(shè)計(jì)技術(shù),能模擬攝像機(jī)推拉鏡頭的效果,一推一拉,極具動(dòng)態(tài)。 我們知道,計(jì)算機(jī)圖形處理的數(shù)據(jù)量非常大,要求的速度也很快。因此往往將圖形處理軟件固化成硬卡(如2.13漢字系統(tǒng)的神筆cad卡),有了圖形處理卡,對(duì)圖形應(yīng)用的編程相對(duì)要容易些,然而,由于資金等問題,大多數(shù)的pc用戶都不具備此設(shè)備,難道說就只能望“卡”興嘆了么?回答當(dāng)然是否定的,本文給出的就是一種純軟件方式的圖形動(dòng)畫技術(shù)。它不要求額外的設(shè)備,只要有ega/vga適

2、配器即可。 為實(shí)現(xiàn)圖形的動(dòng)畫效果,例如實(shí)現(xiàn)軟件封面漢字標(biāo)題的推拉鏡頭效果,只要將一幅幅不同大小的漢字畫面在很短的時(shí)間內(nèi)依次顯示在屏幕上即可。這里涉及到一個(gè)問題,那就是在顯示下一個(gè)畫面之前先要清屏,然后再寫下一個(gè)畫面。無論二者的速度多快,都將影響動(dòng)畫效果,用戶能感受到寫屏和清屏的過程。這將大煞風(fēng)景。本文采用“幕后組織”的方法解決了這一問題。在ega/vga的10h模式下,視頻緩沖區(qū)被分成二頁,一個(gè)頁為當(dāng)前顯示頁,其內(nèi)容即為屏幕上顯示的內(nèi)容;一個(gè)為輸出活動(dòng)頁,所有的視頻輸出都針對(duì)此頁,它可以是當(dāng)前顯示頁,也可以不是。在turboc中提供了兩個(gè)函數(shù),setactivepage和setvisualpa

3、ge分別完成設(shè)置圖形輸出活動(dòng)頁和設(shè)置圖形可見頁。如果我們將輸出活動(dòng)頁設(shè)為非當(dāng)前顯示頁,將一些不想讓用戶看到的處理過程放到活動(dòng)頁這一“幕后”去處理。然后切換當(dāng)前顯示頁和活動(dòng)輸出頁,那么用戶看到的就是我們想讓其看到的內(nèi)容了。 為實(shí)現(xiàn)漢字標(biāo)題的推拉鏡頭效果,需要在屏幕上顯示不同大小的漢字,許多漢字系統(tǒng)都提供了漢字的放大功能,但一則需要漢字系統(tǒng)的支持,且有特殊的控制命令,在c語言中不易調(diào)用;二則其放大和縮小的級(jí)差皆為整數(shù)倍,不能體現(xiàn)緩慢變化的過程。所以筆者編制了一個(gè)西文狀態(tài)下的漢字放大和縮小的函數(shù),可用來完成漢字的任意放大和縮小(例如0.2倍)。同時(shí),由于無須裝載漢字系統(tǒng),因而可節(jié)省大量的內(nèi)存。 有了

4、不同大小的漢字,只要在短時(shí)間內(nèi)將之依次顯示在屏幕上,就能產(chǎn)生動(dòng)畫效果。由于漢字的輸出是采用在屏幕上畫點(diǎn)的方法,所以速度很慢,簡(jiǎn)直讓人無法忍受(其它的圖形輸出也存在這個(gè)問題)。最好是將圖形整個(gè)存儲(chǔ),以便回顯時(shí)獲得較快的速度。c語言中有兩個(gè)函數(shù)getimage和putimage能完成此功能,其響應(yīng)速度是非常快的。但是由于這兩個(gè)函數(shù)都是將圖像保存在內(nèi)存中,而圖像的信息量往往很大,這就是說只能保存有限的圖像,不能滿足我們的要求。筆者在這里采用了用文件來存儲(chǔ)圖像,突破了內(nèi)存的限制,從理論上講可以存儲(chǔ)無限大。makeface程序用來產(chǎn)生封面,它創(chuàng)建兩個(gè)文件:pic為二進(jìn)制圖像文件,保存一幅幅圖像,text

5、pic為一輔助文件,保存每一幅圖像的長(zhǎng)度。dispface用來顯示封面,將pic中的內(nèi)容依次讀到內(nèi)存,用putimage函數(shù)寫回屏幕上。dispface完成封面顯示的速度很快,如果將pic和textpic放在虛擬盤中,那么效果就更好了。需要說明的是,盡管采用用文件來存儲(chǔ)圖像可以不受內(nèi)存空間的限制,但由于getimage和putimage函數(shù)現(xiàn)將圖像放在內(nèi)存中,如果圖像很大,占用內(nèi)存太多時(shí),程序?qū)?huì)發(fā)生不可預(yù)料的結(jié)果。所以在存儲(chǔ)較大的圖像時(shí),應(yīng)采用分塊存儲(chǔ),再分塊會(huì)顯的方法。一般來說一塊以不超過一屏的三分之一(639*120)為好。 本文僅提供一個(gè)簡(jiǎn)單的例子,用makeface建立pic和tex

6、tpic之后,執(zhí)行dispface程序,可在屏幕上看到藍(lán)地紅字的“漢字特技顯示”幾個(gè)字由大到小逐漸推遠(yuǎn),再由小到大逐漸拉近,最后定于屏幕中央。參照本文,加以擴(kuò)充和完善,相信不難編出漂亮、醒目的動(dòng)畫封面。 本程序的運(yùn)行環(huán)境為turboc2.0,ega/vga顯示器。 附:makeface.c,jputhzc和dispface.c /*jputhz.c*/ /*調(diào)用格式:hzdisp(x列,y行,橫擴(kuò)倍數(shù),縱擴(kuò)倍數(shù),顏色,要顯示的漢字)*/ #includestdio.h #includegraphics.h #includestring.h #includestdlib.h voidhzdisp

7、(x,y,x-rate,y-rate,color,cstring) unsignedintx,y; floatx-rate,y-rate; intcolor; charcstring; file*fp; registerintn=0,i,j,k; registerintx1,y1; chardot73; charsec1,sec2; unsignedlongindex; fp=fopen(c:213hzk24s,rb); if(fp=null)printf(cantopenhzkn);exit(1); while(*cstring) n+; sec1=cstring-160; sec2=(cs

8、tring+1)-160; index=(sec1-16)94+sec2-1; index=72; if(fseek(fp,index,0) restorecrtmode(); printf(fileseekerror!n); fclose(fp); exit(1); if(fread(dot,1,72,fp)!=72)cstring+;continue; cstring+; cstring+; for(i=0;i(7-k)&1) x1=x-rate(i+25n); y1=y-rate(j8+k); if(x-rate1,i-) dx=250-i20; dy=150-5i; cleardevi

9、ce(); hzdisp(dx,dy,xr,yr,12,aa); savescreen(dx,dy,dx+200xr,dy+24yr); xr-=0.25;yr-=0.25; getch(); fclose(fp1); fclose(text); closegraph(); /-/ #includestdio.h #includegraphics.h filefp1,text; / restorescreen(intx0,inty0,unsignedintlength) charbufs; bufs=(char)malloc(length); if(bufs=null) puts(malloc

10、fail);exit(1); fread(bufs,length,1,fp1); putimage(x0,y0,bufs,copy-put); free(bufs); / main() intdrive=detect,mode,i,j; longkeep=0; intdx,dy; unsignedintaa10; unsignedintab; ab=aa; if(fp1=fopen(e:pic,rb)=null) printf(cannotopenfilepicn); exit(1); rewind(fp1); if(text=fopen(e:textpic,rb)=null) printf(

11、cannotopenfiletextpicn); exit(1); rewind(text); ab+; for(i=0;i1;i-) setvisualpage(0); setactivepage(1); cleardevice(); restorescreen(40+(10-i)20,100+5(10-i),aa10-i); i-; setvisualpage(1); setactivepage(0); cleardevice(); restorescreen(40+(10-i)20,100+5(10-i),aa10-i); for(i=9;i0;i-) setvisualpage(0); setactivepage(1); cleardevice(); for(j=1;ji;j+) keep+=aaj; fseek(fp1,keep,seek-set); keep=0; restorescreen(40+i20,100+5i,aai); i-; setvisualpage(1); setact

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論