旋轉(zhuǎn)式和翻頁式清屏_第1頁
旋轉(zhuǎn)式和翻頁式清屏_第2頁
旋轉(zhuǎn)式和翻頁式清屏_第3頁
旋轉(zhuǎn)式和翻頁式清屏_第4頁
旋轉(zhuǎn)式和翻頁式清屏_第5頁
已閱讀5頁,還剩8頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、旋轉(zhuǎn)式和翻頁式清屏本文介紹的旋轉(zhuǎn)式和翻頁式兩種清屏方式,有一個共同的基本思想,那就是:首先是把屏幕劃分成若干三角形區(qū),然后利用 C語言函數(shù)功能調(diào)用,按照指定的順序,對這些塊區(qū)實行逐塊逐塊地清屏。當(dāng)然,這里的兩種方式又有許多不同之處。例如:旋轉(zhuǎn)式清屏,在確定旋轉(zhuǎn)中心點之后,以該點為頂點,把全屏幕劃分成若干個直角三角形(以屏幕中心為旋轉(zhuǎn)點時,全屏幕被劃分 8塊直角三角形區(qū)域)。清屏函數(shù)的功能是清除以兩點為對應(yīng)頂點的方塊區(qū)域中的信息。各個小方塊的對應(yīng)頂點坐標(biāo),借助于一個甚至兩個直線方程式來描述。使用 C語言中的 for語句甚至是 for語句內(nèi)外雙層循環(huán),控制動點軌跡。翻頁式清屏,在確定掀起角之后,以

2、該角點為等邊直角三角形的直角頂點。與之對應(yīng)的還有一個等邊直角三角形。在屏幕中部剩下一個斜三角形。翻頁函數(shù)的功能是以線形方式復(fù)蓋原來位置上的信息。在程序中,使用了 C語言中特有的遞增和遞減表達式,實現(xiàn)了從一角到其對應(yīng)角的傾斜清屏。具有整潔快捷的效果。在清屏過程中,以方塊形式的文本清除比以線形方式的圖形清除,面積要大,但粗糙得很。能否用線形方式去替代方塊方式,實現(xiàn)旋轉(zhuǎn)式清屏呢? 回答是肯定的。在這里有廣闊的擴充余地。本文的turbo u2.0源程序qp.c 在486機上通過。/* 旋轉(zhuǎn)式和翻頁式清屏 qp.c */#include <graphics.h>#include <do

3、s.h>#include <math.h>/* 迭套矩形圖案 */tx(int x1,int y1,int x2,int y2) int i,c=2; float j=0.75,k=0;y1=0;y2=479;x2=639;for (i=0;i<320;i+) x1=i; setcolor(c);rectangle(x1,y1,x2,y2); /* 畫矩形,(x1,y1)和(x2,y2)為對應(yīng)頂點*/k+=j;y1=k;y2=479-k;x2-;c+; /* 設(shè)置清屏函數(shù) */qp(int y1,int x1,int y2,int x2,int ls,int sx) /

4、* ls字符滾動行數(shù),sx前景和背景的顏色屬性 */union REGS r; r.h.ah=6;r.h.al=ls; r.h.bh=sx;r.h.ch=y1; r.h.cl=x1;r.h.dh=y2; r.h.dl=x2; int86(0x10,&r,&r);/* 左、右半屏旋轉(zhuǎn) */cls1() int i,j,x,y;qp(0,0,23,79,0,63);for(i=40;i>0;i-)for (x=40;x>i;x-) y=21*(x-i)/(40-i)+1;qp(1,x,y,x,0,11);for(j=1;j<23;j+)for (i=1;i<

5、40;i+) x=21*(i-1)/40+1;y=(21-j)*(i-1)/40+j;if (x<y) qp(x,i,y,i,0,11); for(i=41;i<79;i+)for (x=41;x<i;x+) y=21*(x-i)/(41-i)+1;qp(1,x,y,x,0,11);for(j=1;j<23;j+)for (i=40;i<79;i+) x=21*(79-i)/39+1;y=(22-j)*(79-i)/39+j;if (x<y) qp(x,i,y,i,0,11); sleep(1);/* 由上至下同時旋轉(zhuǎn) */cls2() int i,j,z,

6、x2,y2,x1,y1;qp(0,0,23,79,0,63);for(i=39;i>0;i-)for (x2=39;x2>i;x2-) z=79-x2;y2=21*(x2-i)/(39-i)+1;qp(1,x2,y2,x2,0,82);qp(1,z,y2,z,0,82);for(j=1;j<23;j+)for (i=1;i<40;i+) z=39+i;x1=21*(i-1)/39+1;y1=(21-j)*(i-1)/39+j;if (x1<y1)qp(x1,i,y1,i,0,82);x2=21*(79-z)/39+1;y2=(22-j)*(79-z)/39+j;i

7、f (x2<y2)qp(x2,z,y2,z,0,82); sleep(1);/* 靠右邊倒旋轉(zhuǎn) */cls3() int i,j,x,y;qp(0,0,23,79,0,63);for(i=1;i<=79;i+)for (x=1;x<i;x+) y=21*(i-x)/(i-1)+1;if (y<1) y=1;qp(1,x,y,x,0,73);for(j=1;j<22;j+)for (x=1;x<79;x+) i=21*(79-x)/78+1;y=(j-22)*(x-1)/78+22;if (i<y) qp(i,x,y,x,0,73); sleep(1);

8、/* 繞中心旋轉(zhuǎn)一周 */cls4() int i,j,x,y;qp(0,0,23,79,0,63);/* 分 8塊直角三角形清屏 */for (j=12;j>1;j-)for (x=39;x<79;x+) y=-(x-78)*(12-j)/38+j;qp(y,x,12,x,0,24);/*清第1塊*/for (i=78;i>40;i-)for (x=41;x<79;x+) j=-11*(x-40)/(i-40)+12;y=-11*(x-40)/38+12;if(j<1) j=1;qp(j,x,y,x,0,24);/*清第2塊*/for(i=40;i>0;i

9、-)for (x=40;x>i;x-) y=10*(x-i)/(40-i)+1;qp(1,x,y,x,0,24);/*清第3塊*/for(j=1;j<12;j+)for (i=1;i<41;i+) x=10*(i-1)/39+1;y=(11-j)*(i-1)/39+j;if (x<y) qp(x,i,y,i,0,24);/*清第4塊*/ for(j=12;j<23;j+)for (i=1;i<40;i+) y=(12-j)*(i-1)/39+j;if (y<23) qp(12,i,y,i,0,24);/*清第5塊*/ for(i=1;i<41;i

10、+)for (x=41;x>1;x-) j=22-10*(x-1)/40;y=22-10*(x-i)/(41-i);if (y>22) y=22;qp(j,x,y,x,0,24);/*清第6塊*/for (x=41;x<79;x+)for (i=40;i<=x;i+) y=22-10*(x-i)/(x-40);qp(y,i,22,i,0,24);/*清第7塊*/for(j=22;j>11;j-)for (x=40;x<79;x+) i=-(x-78)*(12-j)/38+j;y=10*(x-78)/38+22;if (i<y) qp(i,x,y,x,0

11、,24);/*清第8塊*/ sleep(1);/* 從右下向左上翻頁 */cls5() tx(0,0,639,479);rightdown_leftup(0,0,639,479,4,2);/* 從左上向右下翻頁 */cls6() tx(0,0,639,479);leftup_rightdown(0,0,639,479,4,0);rightdown_leftup(int x1,int y1,int x2,int y2,int bybs,int xyzs)/*從右下角向左上角翻頁*/* bybs本頁背面顏色, xyzs下頁正面顏色*/ int u1,u2,v1,v2;u2=x2;v1=y1;v2=

12、y2;for (u1=x2;u1>x1;u1-) if (v1<v2) /* 清除右下直三角區(qū) */setcolor(xyzs); line(u2-,y2,x2,v2-);setcolor(bybs);line(x2,v2,u2,v2); line(u2,y2,u2,v2);else /* 清除中部上大下尖斜三角區(qū)*/setcolor(xyzs); line(u2-,y2,x2-,y1);setcolor(bybs);line(u2,y2,u2,y1); delay(20);/* 清除左上直三角區(qū) */for (u1=y2;u1>=y1;u1-) setcolor(xyzs)

13、; line(x1,y2-,x2-,v1);delay(u1/50);/* 翻至末尾, 速度加快*/ sleep(2);leftup_rightdown(int x1,int y1,int x2,int y2,int bybs,int xyzs)/*從左上角向右下角翻頁*/*bybs本頁背面顏色, xyzs下頁正面顏色*/ int u1,u2,v1,v2;u1=x1;v1=y1;v2=y2;for (u2=x1;u2<x2;u2+) if (v1<v2) /* 清除左上直三角區(qū) */setcolor(xyzs);line(u1+,y1,x1,v1+);/* 翻頁 */setcolo

14、r(bybs);line(u1,y1,u1,v1);line(x1,v1,u1,v1);else /* 清除中部上尖下大斜三角區(qū)*/setcolor(xyzs); line(u1+,y1,x1+,y2);setcolor(bybs);line(u1,y1,u1,y2); delay(20);for (u2=y1;u2<y2;u2+) /* 清除右下直三角區(qū) */setcolor(xyzs);line(x2,y1+,x1+,v2);delay(u2/50);/* 翻至末尾, 速度加快 */main() int driver=DETECT,mode;int i,j,k;char p1=&qu

15、ot; 旋轉(zhuǎn)式和翻頁式清屏"char p2="1. 分左右半屏旋轉(zhuǎn)"char p3="2. 由上至下同時旋轉(zhuǎn)"char p4="3. 靠右邊倒旋轉(zhuǎn)"char p5="4. 繞中心旋轉(zhuǎn)一周"char p6="5. 從右下向左上翻頁"char p7="6. 從左上向右下翻頁"char p8="7. 以上種種清屏"char p9="0. 退出"initgraph(&driver,&mode," "

16、);do clrscr();qp(5,14,18,65,20,43);gotoxy(27,8); printf("%sn",p1);gotoxy(21,10); printf("%s",p2);gotoxy(43,10); printf("%s",p3);gotoxy(21,12); printf("%s",p4);gotoxy(43,12); printf("%s",p5);gotoxy(21,14); printf("%s",p6);gotoxy(43,14); printf("%s",p7);gotoxy(21,16); printf("%s",p8);gotoxy(43,16); printf("%s",p9);gotoxy(32,18);printf("請選擇:0-7 清屏方式: ");gotoxy(55,18); scanf(&quo

溫馨提示

  • 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

提交評論