99精品久久这里只有精品,三上悠亚免费一区二区在线,91精品福利一区二区,爱a久久片,无国产精品白浆免费视,中文字幕欧美一区,爽妇网国产精品,国产一级做a爱免费观看,午夜一级在线,国产精品偷伦视频免费手机播放

    <del id="eyo20"><dfn id="eyo20"></dfn></del>
  • <small id="eyo20"><abbr id="eyo20"></abbr></small>
      <strike id="eyo20"><samp id="eyo20"></samp></strike>
    • 首頁 > 文章中心 > 正文

      軟件封面特技顯示語言

      前言:本站為你精心整理了軟件封面特技顯示語言范文,希望能為你的創(chuàng)作提供參考價值,我們的客服老師可以幫助你提供個性化的參考范文,歡迎咨詢。

      軟件封面特技顯示語言

      軟件編制人員都希望自己的軟件能有一個漂亮的封面,如果能將圖形動畫技術(shù)應(yīng)用到封面設(shè)計中,無疑會使封面更加美觀醒目,為應(yīng)用軟件錦上添花。

      本文提供了一種封面設(shè)計技術(shù),能模擬攝像機(jī)推拉鏡頭的效果,一推一拉,極具動態(tài)。

      我們知道,計算機(jī)圖形處理的數(shù)據(jù)量非常大,要求的速度也很快。因此往往將圖形處理軟件固化成硬卡(如2.13漢字系統(tǒng)的神筆CAD卡),有了圖形處理卡,對圖形應(yīng)用的編程相對要容易些,然而,由于資金等問題,大多數(shù)的PC用戶都不具備此設(shè)備,難道說就只能望“卡”興嘆了么?回答當(dāng)然是否定的,本文給出的就是一種純軟件方式的圖形動畫技術(shù)。它不要求額外的設(shè)備,只要有EGA/VGA適配器即可。

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

      為實現(xiàn)漢字標(biāo)題的推拉鏡頭效果,需要在屏幕上顯示不同大小的漢字,許多漢字系統(tǒng)都提供了漢字的放大功能,但一則需要漢字系統(tǒng)的支持,且有特殊的控制命令,在C語言中不易調(diào)用;二則其放大和縮小的級差皆為整數(shù)倍,不能體現(xiàn)緩慢變化的過程。所以筆者編制了一個西文狀態(tài)下的漢字放大和縮小的函數(shù),可用來完成漢字的任意放大和縮小(例如0.2倍)。同時,由于無須裝載漢字系統(tǒng),因而可節(jié)省大量的內(nèi)存。

      有了不同大小的漢字,只要在短時間內(nèi)將之依次顯示在屏幕上,就能產(chǎn)生動畫效果。由于漢字的輸出是采用在屏幕上畫點的方法,所以速度很慢,簡直讓人無法忍受(其它的圖形輸出也存在這個問題)。最好是將圖形整個存儲,以便回顯時獲得較快的速度。C語言中有兩個函數(shù)getimage和putimage能完成此功能,其響應(yīng)速度是非??斓摹5怯捎谶@兩個函數(shù)都是將圖像保存在內(nèi)存中,而圖像的信息量往往很大,這就是說只能保存有限的圖像,不能滿足我們的要求。筆者在這里采用了用文件來存儲圖像,突破了內(nèi)存的限制,從理論上講可以存儲無限大。makeface程序用來產(chǎn)生封面,它創(chuàng)建兩個文件:pic為二進(jìn)制圖像文件,保存一幅幅圖像,textpic為一輔助文件,保存每一幅圖像的長度。dispface用來顯示封面,將pic中的內(nèi)容依次讀到內(nèi)存,用putimage函數(shù)寫回屏幕上。dispface完成封面顯示的速度很快,如果將pic和textpic放在虛擬盤中,那么效果就更好了。需要說明的是,盡管采用用文件來存儲圖像可以不受內(nèi)存空間的限制,但由于getimage和putimage函數(shù)現(xiàn)將圖像放在內(nèi)存中,如果圖像很大,占用內(nèi)存太多時,程序?qū)l(fā)生不可預(yù)料的結(jié)果。所以在存儲較大的圖像時,應(yīng)采用分塊存儲,再分塊會顯的方法。一般來說一塊以不超過一屏的三分之一(639*120)為好。

      本文僅提供一個簡單的例子,用makeface建立pic和textpic之后,執(zhí)行dispface程序,可在屏幕上看到藍(lán)地紅字的“漢字特技顯示”幾個字由大到小逐漸推遠(yuǎn),再由小到大逐漸拉近,最后定于屏幕中央。參照本文,加以擴(kuò)充和完善,相信不難編出漂亮、醒目的動畫封面。

      本程序的運行環(huán)境為TurboC2.0,EGA/VGA顯示器。

      附:makeface.c,jputhzc和dispface.c

      /*jputhz.c*/

      /*調(diào)用格式:hzdisp(X列,Y行,橫擴(kuò)倍數(shù),縱擴(kuò)倍數(shù),顏色,要顯示的漢字)*/

      #include"stdio.h"

      #include"graphics.h"

      #include"string.h"

      #include"stdlib.h"

      voidhzdisp(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;

      chardot[73];

      charsec1,sec2;

      unsignedlongindex;

      fp=fopen("c:\\213\\hzk24s","rb");

      if(fp==NULL){printf("Can''''topenhzk\n");exit(1);}

      while(*cstring)}

      n++;

      sec1=cstring-160;

      sec2=(cstring+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<24;i++)

      for(j=0;j<3;j++)

      for(k=0;k<8;k++)

      if(dot[i3+j]>>(7-k)&1)

      {

      x1=x-rate(i+25n);

      y1=y-rate(j8+k);

      if((x-rate<=1)&&(y-rate<=1))putpixel(x1+x,y1+y,color);

      else{fillellipse(x1+x,y1+y,x-rate,y-rate);}

      }

      }

      fclose(fp);

      }

      /----------/

      #include"jputhz.c"

      FILEfp1,text;

      //

      savescreen(intx0,inty0,intx1,inty1)

      {

      unsignedintsize;

      charbufs;

      unsignedintpiclong;

      intss;

      ss=s

      izeof(unsignedint);

      piclong=(unsignedint)malloc(ss);

      size=imagesize(x0,y0,x1,y1);

      piclong=size;

      fwrite(piclong,ss,1,text);

      bufs=(char)malloc(size);

      if(bufs==NULL)

      {puts("Memoryallocfail!/n");getch();return(0);}

      getimage(x0,y0,x1,y1,bufs);

      if(fwrite(bufs,size,1,fp1)!=1)

      {puts("fwritefall");return(0);}

      free(bufs);

      }

      //

      main()

      {

      intdrive=DETECT,mode,i;

      intdx,dy;

      floatxr=2.5,yr=2.5;

      charaa[]="漢字特技顯示"/

      if((fp1=fopen("e:\\pic","w+b"))==NULL)

      {printf("Cannotopenfilepic\n");

      exit(1);}

      if((text=fopen("e:\\textpic","w+b"))==NULL)

      {printf("Cannotopenfiletextpic\n");

      exit(1);}

      initgraph(&drive,&mode,"d:\\tc");

      setbkcolor(BLUE);

      cleardevice();

      for(i=10,i>1,i--)

      {

      dx=250-i20;

      dy=150-5i;

      cleardevice();

      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();

      }

      /----------/

      #include"stdio.h"

      #include"graphics.h"

      FILEfp1,text;

      //

      restorescreen(intx0,inty0,unsignedintlength)

      {

      charbufs;

      bufs=(char)malloc(length);

      if(bufs==NULL)

      {puts("mallocfail");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;

      unsignedintaa[10];

      unsignedintab;

      ab=aa;

      if((fp1=fopen("e:\\pic","rb"))==NULL)

      {printf("Cannotopenfilepic\n");

      exit(1);}

      rewind(fp1);

      if((text=fopen("e:\\textpic","rb"))==NULL)

      {printf("Cannotopenfiletextpic\n");

      exit(1);}

      rewind(text);

      ab++;

      for(i=0;i<9;i++)

      {

      fread(ab++,sizeof(unsignedint),1,text);

      }

      initgraph(&drive,&mode,"d:\\tc");

      setbkcolor(BLUE);

      setcolor(12);

      setfillstyle(SOLID-FILL,12);

      for(i=9;i>1;i--)

      {

      setvisualpage(0);

      setactivepage(1);

      cleardevice();

      restorescreen(40+(10-i)20,100+5(10-i),aa[10-i]);

      i--;

      setvisualpage(1);

      setactivepage(0);

      cleardevice();

      restorescreen(40+(10-i)20,100+5(10-i),aa[10-i]);

      }

      for(i=9;i>0;i--)

      {

      setvisualpage(0);

      setactivepage(1);

      cleardevice();

      for(j=1;j>i;j++)

      keep+=aa[j];

      fseek(fp1,keep,SEEK-SET);

      keep=0;

      restorescreen(40+i20,100+5i,aa[i]);

      i--;

      setvisualpage(1);

      setactivepage(0);

      cleardevice();

      for(j=1;j<i;j++)

      keep+=aa[j];

      fseek(fp1,keep,SEEK-SET);

      keep=0;

      restorescreen(40+i20,100+5i,aa[i]);

      }

      getch();

      fclose(fp1);

      fclose(text);

      closegraph();

      国产优质av一区二区三区| 国产第19页精品| 一级一级毛片无码免费视频| 日本视频一区二区二区| 日本中文字幕婷婷在线| 窝窝午夜看片| 91av国产视频| 天堂a版一区二区av| 精品国产精品久久一区免费式 | 在线观看免费的黄片小视频| 国产一区二区三区毛片| 亚洲日韩av无码中文字幕美国| 国产精品久久久久久久久免费观看| 国产99久久久国产精品免费| 免费a级毛片高清在钱| 国产熟妇人妻精品一区二区动漫| 一本大道久久东京热无码av| 91久久国产露脸国语对白| 国产av熟女一区二区三区| 成av人片一区二区三区久久| 午夜不卡亚洲视频| 国产天堂av在线播放资源| 国产乡下三级全黄三级| 91视频88av| 国产高清不卡在线视频| 成年丰满熟妇午夜免费视频| 国产无遮挡又黄又爽又色| 久久99久久99精品免视看国产成人| 午夜视频一区二区三区播放| 东北老女人高潮大喊舒服死了| 在线亚洲综合| 国产网友自拍视频在线观看| 国产a级毛片久久久精品毛片| 永久免费av无码网站性色av| 北岛玲精品一区二区三区| 亚洲男人综合久久综合天堂| 人妻激情另类乱人伦人妻| 国产亚洲精品国产福利在线观看| 深夜日韩在线观看视频| 九九久久自然熟的香蕉图片| 最新国产三级|