中文字幕在线一区二区在线,久久久精品免费观看国产,无码日日模日日碰夜夜爽,天堂av在线最新版在线,日韩美精品无码一本二本三本,麻豆精品三级国产国语,精品无码AⅤ片,国产区在线观看视频

      軟件封面特技顯示的語(yǔ)言實(shí)現(xiàn)

      • 相關(guān)推薦

      軟件封面特技顯示的語(yǔ)言實(shí)現(xiàn)

      軟件編制人員都希望自己的軟件能有一個(gè)漂亮的封面,如果能將圖形動(dòng)畫(huà)技術(shù)應(yīng)用到封面設(shè)計(jì)中,無(wú)疑會(huì)使封面更加美觀醒目,為應(yīng)用軟件錦上添花。
      本文提供了一種封面設(shè)計(jì)技術(shù),能模擬攝像機(jī)推拉鏡頭的效果,一推一拉,極具動(dòng)態(tài)。
      我們知道,計(jì)算機(jī)圖形處理的數(shù)據(jù)量非常大,要求的速度也很快。因此往往將圖形處理軟件固化成硬卡(如2.13漢字系統(tǒng)的神筆CAD卡),有了圖形處理卡,對(duì)圖形應(yīng)用的編程相對(duì)要容易些,然而,由于資金等問(wèn)題,大多數(shù)的PC用戶(hù)都不具備此設(shè)備,難道說(shuō)就只能望“卡”興嘆了么?回答當(dāng)然是否定的,本文給出的就是一種純軟件方式的圖形動(dòng)畫(huà)技術(shù)。它不要求額外的設(shè)備,只要有EGA/VGA適配器即可。
      為實(shí)現(xiàn)圖形的動(dòng)畫(huà)效果,例如實(shí)現(xiàn)軟件封面漢字標(biāo)題的推拉鏡頭效果,只要將一幅幅不同大小的漢字畫(huà)面在很短的時(shí)間內(nèi)依次顯示在屏幕上即可。這里涉及到一個(gè)問(wèn)題,那就是在顯示下一個(gè)畫(huà)面之前先要清屏,然后再寫(xiě)下一個(gè)畫(huà)面。無(wú)論二者的速度多快,都將影響動(dòng)畫(huà)效果,用戶(hù)能感受到寫(xiě)屏和清屏的過(guò)程。這將大煞風(fēng)景。本文采用“幕后組織”的方法解決了這一問(wèn)題。在EGA/VGA的10H模式下,視頻緩沖區(qū)被分成二頁(yè),一個(gè)頁(yè)為當(dāng)前顯示頁(yè),其內(nèi)容即為屏幕上顯示的內(nèi)容;一個(gè)為輸出活動(dòng)頁(yè),所有的視頻輸出都針對(duì)此頁(yè),它可以是當(dāng)前顯示頁(yè),也可以不是。在Turbo C中提供了兩個(gè)函數(shù),setactivepage和setvisualpage分別完成設(shè)置圖形輸出活動(dòng)頁(yè)和設(shè)置圖形可見(jiàn)頁(yè)。如果我們將輸出活動(dòng)頁(yè)設(shè)為非當(dāng)前顯示頁(yè),將一些不想讓用戶(hù)看到的處理過(guò)程放到活動(dòng)頁(yè)這一“幕后”去處理。然后切換當(dāng)前顯示頁(yè)和活動(dòng)輸出頁(yè),那么用戶(hù)看到的就是我們想讓其看到的內(nèi)容了。
      為實(shí)現(xiàn)漢字標(biāo)題的推拉鏡頭效果,需要在屏幕上顯示不同大小的漢字,許多漢字系統(tǒng)都提供了漢字的放大功能,但一則需要漢字系統(tǒng)的支持,且有特殊的控制命令,在C語(yǔ)言中不易調(diào)用;二則其放大和縮小的級(jí)差皆為整數(shù)倍,不能體現(xiàn)緩慢變化的過(guò)程。所以筆者編制了一個(gè)西文狀態(tài)下的漢字放大和縮小的函數(shù),可用來(lái)完成漢字的任意放大和縮小(例如0.2倍)。同時(shí),由于無(wú)須裝載漢字系統(tǒng),因而可節(jié)省大量的內(nèi)存。
      有了不同大小的漢字,只要在短時(shí)間內(nèi)將之依次顯示在屏幕上,就能產(chǎn)生動(dòng)畫(huà)效果。由于漢字的輸出是采用在屏幕上畫(huà)點(diǎn)的方法,所以速度很慢,簡(jiǎn)直讓人無(wú)法忍受(其它的圖形輸出也存在這個(gè)問(wèn)題)。最好是將圖形整個(gè)存儲(chǔ),以便回顯時(shí)獲得較快的速度。C語(yǔ)言中有兩個(gè)函數(shù)getimage和putimage能完成此功能,其響應(yīng)速度是非常快的。但是由于這兩個(gè)函數(shù)都是將圖像保存在內(nèi)存中,而圖像的信息量往往很大,這就是說(shuō)只能保存有限的圖像,不能滿(mǎn)足我們的要求。筆者在這里采用了用文件來(lái)存儲(chǔ)圖像,突破了內(nèi)存的限制,從理論上講可以存儲(chǔ)無(wú)限大。makeface程序用來(lái)產(chǎn)生封面,它創(chuàng)建兩個(gè)文件:pic為二進(jìn)制圖像文件,保存一幅幅圖像,textpic為一輔助文件,保存每一幅圖像的長(zhǎng)度。dispface用來(lái)顯示封面,將pic中的內(nèi)容依次讀到內(nèi)存,用putimage函數(shù)寫(xiě)回屏幕上。dispface完成封面顯示的速度很快,如果將pic和textpic放在虛擬盤(pán)中,那么效果就更好了。需要說(shuō)明的是,盡管采用用文件來(lái)存儲(chǔ)圖像可以不受內(nèi)存空間的限制,但由于getimage和putimage函數(shù)現(xiàn)將圖像放在內(nèi)存中,如果圖像很大,占用內(nèi)存太多時(shí),程序?qū)?huì)發(fā)生不可預(yù)料的結(jié)果。所以在存儲(chǔ)較大的圖像時(shí),應(yīng)采用分塊存儲(chǔ),再分塊會(huì)顯的方法。一般來(lái)說(shuō)一塊以不超過(guò)一屏的三分之一 (639*120)為好。
      本文僅提供一個(gè)簡(jiǎn)單的例子,用makeface建立pic和textpic之后,執(zhí)行dispface程序,可在屏幕上看到藍(lán)地紅字的“漢字特技顯示”幾個(gè)字由大到小逐漸推遠(yuǎn),再由小到大逐漸拉近,最后定于屏幕中央。參照本文,加以擴(kuò)充和完善,相信不難編出漂亮、醒目的動(dòng)畫(huà)封面。
      本程序的運(yùn)行環(huán)境為T(mén)urbo C 2.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"
      void hzdisp (x,y,x-rate,y-rate,color,cstring)
      unsigned int x,y;
      float x-rate,y-rate;
      int color;
      char cstring[];
      {
      FILE *fp;
      register int n=0,i,j,k;
      register int x1,y1;
      char dot[73];
      char sec1,sec2;
      unsigned long index;
      fp=fopen("c:\\213\\hzk24s","rb");
      if(fp==NULL){printf("Can't open hzk\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("File seek error !\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"
      FILE fp1,text;
      //
      savescreen(int x0,int y0,int x1,int y1)
      {
      unsigned int size;
      char bufs;
      unsigned int piclong;
      int ss;
      ss=s

      izeof(unsigned int);
      piclong=(unsigned int)malloc(ss);
      size=imagesize(x0,y0,x1,y1);
      piclong=size;
      fwrite(piclong,ss,1,text);
      bufs=(char)malloc(size);
      if(bufs==NULL)
      {puts("Memory alloc fail !/n");getch();return(0);}
      getimage(x0,y0,x1,y1,bufs);
      if(fwrite(bufs,size,1,fp1)!=1)
      {puts("fwrite fall");return(0);}
      free(bufs);
      }
      //

      main()
      {
      int drive=DETECT,mode,i;
      int dx,dy;
      float xr=2.5,yr=2.5;
      char aa[]="漢字特技顯示"/
      if((fp1=fopen("e:\\pic","w+b"))==NULL)
      {printf("Can not open file pic\n");
      exit(1);}
      if((text=fopen("e:\\textpic","w+b"))==NULL)
      {printf("Can not open file textpic\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"
      FILE fp1,text;
      //
      restorescreen(int x0,int y0,unsigned int length)
      {
      char bufs;
      bufs=(char)malloc(length);
      if(bufs==NULL)
      {puts("malloc fail");exit(1);}
      fread(bufs,length,1,fp1);
      putimage (x0,y0,bufs,COPY-PUT);
      free(bufs);
      }
      //
      main()
      {
      int drive=DETECT,mode,i,j;
      long keep=0;
      int dx,dy;
      unsigned int aa[10];
      unsigned int ab;
      ab=aa;
      if((fp1=fopen("e:\\pic","rb"))==NULL)
      {printf("Can not open file pic\n");
      exit(1);}
      rewind(fp1);
      if((text=fopen("e:\\textpic","rb"))==NULL)
      {printf("Can not open file textpic\n");
      exit(1);}
      rewind(text);
      ab++;
      for(i=0;i<9;i++)
      {
      fread(ab++,sizeof(unsigned int),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();
      }

      【軟件封面特技顯示的語(yǔ)言實(shí)現(xiàn)】相關(guān)文章:

      多種數(shù)制顯示的匯編語(yǔ)言編程實(shí)現(xiàn)03-19

      YUV轉(zhuǎn)換RGB顯示的實(shí)現(xiàn)03-07

      利用DVI實(shí)現(xiàn)雙屏幕超寬圖像顯示03-18

      嵌入式現(xiàn)場(chǎng)智能顯示系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)03-07

      《幸運(yùn)智多星》節(jié)目控制軟件的設(shè)計(jì)與實(shí)現(xiàn)03-18

      不依賴(lài)高點(diǎn)陣字庫(kù)實(shí)現(xiàn)屏幕漢字顯示03-03

      聯(lián)鎖圖表軟件設(shè)計(jì)的實(shí)現(xiàn)技術(shù)與結(jié)構(gòu)03-06

      動(dòng)態(tài)語(yǔ)音頻譜演示軟件的設(shè)計(jì)與實(shí)現(xiàn)03-07

      通用計(jì)件工資軟件的設(shè)計(jì)與實(shí)現(xiàn)03-18

      主站蜘蛛池模板: 中文字幕无码免费久久9| 日韩极品视频在线观看免费| 盐津县| 亚洲日本国产乱码va在线观看| 日本岛国视频一区二区三区| 苗栗县| 美女熟妇67194免费入口| 国产成人AV乱码免费观看| av免费看网站在线观看| 开远市| 花莲市| av一区二区三区亚洲| 无码超乳爆乳中文字幕| 亚洲欧洲AV综合色无码| 国产在线观看精品一区二区三区| www.五月激情| 热re99久久精品国产66热6| 精品国产亚洲av蜜臀| 亚洲黄色一级片在线观看| 久久人妻av中文字幕| 亚洲国产一区久久yourpan| 南溪县| 博湖县| 邵东县| 国产在线看不卡一区二区| 人妻无码人妻有码不卡| 国产女人看国产在线女人| 日本一区二区三区资源视频 | 小13箩利洗澡无码免费视频| 久久免费少妇高潮免费| 日本视频精品一区二区| 旅游| 免费人人av看| 亚洲一区二区三区免费av在线| 国产品精品久久久久中文| 手游| 亚洲乱码中文字幕综合| 日韩欧美亚洲国产一区二区三区| 亚洲精品国产福利在线观看| 国产精品无码久久久久下载| 18禁黄无遮挡免费网站|