利用CB開發(fā)特殊的屏幕顯示效果_第1頁
利用CB開發(fā)特殊的屏幕顯示效果_第2頁
利用CB開發(fā)特殊的屏幕顯示效果_第3頁
利用CB開發(fā)特殊的屏幕顯示效果_第4頁
利用CB開發(fā)特殊的屏幕顯示效果_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、以前,程序員在DOS平臺下開發(fā)應(yīng)用軟件時(shí),都會(huì)利用DOS的開放性特點(diǎn),通過中斷編寫出一些特殊的顯示效果,以此來給自己的程序增加一些有趣的特色。然而,隨著面向Windows的編程和可視化的第四代開發(fā)工具的逐步使用,人們越來越被Windows的統(tǒng)一的編程風(fēng)格所束縛,同時(shí)由于Windows直接管理中斷,想用原來的方法來實(shí)現(xiàn)一些特殊的顯示效果變得越來越困難了。 那么,在Windows時(shí)代程序員如何來實(shí)現(xiàn)窗口的特殊效果呢?實(shí)際上,由于整個(gè)Windows是圖形顯示系統(tǒng),因此對系統(tǒng)而言,用戶程序的每一個(gè)界面、窗口都是系統(tǒng)的一個(gè)畫布。程序員可以利用這一特點(diǎn)來實(shí)現(xiàn)窗口的特殊效果。 最近筆者利用C+ Builde

2、r 5.0 Enterprise成功的實(shí)現(xiàn)了該項(xiàng)功能,現(xiàn)介紹如下: 1、在BCB中建立一個(gè)工程文件project1.dpr,在Form1中添加如下控件: 控件名稱      屬性    值 Tform     Color    clBtnText    TMainMenu   Name MainMneu1 Timage Name Image1    Align

3、0;   alClient AutoSize True 同時(shí)在 MainMenu1控件中增加一個(gè)菜單項(xiàng),其屬性為: Name Caption Items1 圖像從中間往左右分出 Items2 圖像從左右往中間合進(jìn) Items3 圖像從中間往上下分出 Items4 圖像從上下往中間合進(jìn) Items5 圖像從左移入 Items6 圖像從右移入 Items7 圖像從上移入 Items8 圖像從下移入 Items9 圖像從左刷屏顯示 Items10圖像從右刷屏顯示 Items11圖像從上刷屏顯示 Items12圖像從下刷屏顯示 Items13圖像從上往下流水 Items14圖像從下

4、往上流水 Items15圖像圓形展出 Items16圖像左右錯(cuò)移 Items17圖像上下錯(cuò)移 同時(shí)在Unit.cpp中的private中添加如下變量: private: BITMAP bm; Graphics:Tbitmap *Bitmap1; int I,j; int WideHalf; Trect Dest1,Source1,Dest2,Source2; int HeightHalf; HRGN MyRgn; 2、在Form1的OnCreate事件中添加如下代碼: void _fastcall TForm1:FormCreate(Tobject *Sender)/進(jìn)行圖像特效顯示的初始化操

5、作/   Graphics:Tbitmap *Bitmap1 = new Graphics:Tbitmap();/定義一個(gè)圖象句柄/ Bitmap1->LoadFromFile("C:factory.bmp");/設(shè)定所要特效顯示的圖象為factory.bmp/ if(GetDeviceCaps(Form1->Canvas->Handle,BITSPIXEL)=8)/取得顯示窗口的顏色屬性/   GetObject(Bitmap1->Handle,sizeof(BITMAP),(LPSTR)&bm);

6、if (bm.bmBitsPixel=8)/如果特效顯示的圖象顏色屬性為256色/   SelectPalette(Form1->Canvas->Handle,Bitmap1->Palette,FALSE);/從特效顯示的顏色畫板中提取配色方案/ RealizePalette(Form1->Canvas->Handle); /在顯示窗口中設(shè)置配色方案/ Bitmap->HandleType=bmDDB;      3、在Items1的OnClieck事件中添加如下代碼: void_fastcall

7、TForm1:Item1Click(Tobject *Sender) /圖象從中間往左右分出/   Form1->Refresh( );   WideHalf=Bitmap1->Width/2+Bitmap1->Width%2;   for(i=0;i<=WideHalf; i+)        Dest1=Rect(WideHalf-I,0,WideHalf+I,Bitmap1->Height);     Sour

8、ce1=Rect(WideHalf-I,0,WideHalf+I,Bitmap1->Height);     Form1->Canvas->CopyRect(Dest1,Bitmap1->Canvas,Source1);     for(j=0;j<10000;j+);/圖像的延遲顯示/      4、在Items2的OnClieck事件中添加如下代碼: void_fastcall TForm1:Item2Click(Tobject *Sender) /圖

9、像從左右往中間合進(jìn)/   Form1->Refresh( );   WideHalf=Bitmap1->Width/2+Bitmap1->Width%2; Form1->Refresh( );   for(i=0;i<=WideHalf;i+)        Source1=Dest1=Rect(0,0,I,Bitmap1->Height);     Source2=Dest2=Rect(Bitmap1->Widt

10、h-I,0,Bitmap->Width,Bitmap1->Height);     Form1->Canvas->CopyRect(Dest1,Bimap1->Canvas,Source1);     Form1->Canvas->CopyRect(Dest2,Bitmap1->Canvas,Source2);     for(j=0;j<10000;j+);    5、在Items3的OnClieck事件中添加如下代碼: void

11、_fastcall TForm1:Item3Click(Tobject *Sender) /圖像從中間往上下分出/   Form1->Refresh( ); HeightHAlf=Bittmap1->Height/2+Bitmap1->Height%2;   for(i=0;i<=HeightHalf;i+)        Dest1=Rect(0,HeightHalf-I,Bitmap1->Width,HeightHalf);     Sour

12、ce1=Rect(0,0,BmpHandle->Width,i);     Dest2=Rect(0,HeightHaf,Bitmap1->Width,HeightHalf+i);     Source2=Rect(0,Bitmap1->Height-I,Bitmap1->Width,Bitmap1->height);     Form1->Canvas->CopyRect(Dest1,BmpHandle->Canvas,Source1);  &#

13、160;  Form1->Canvas->CopyRect(Dest2,BmpHandle->Canvas,Source2);     for(j=0;j<10000;j+);    6、在Items4的OnClieck事件中添加如下代碼: void_fastcall TForm1:Item4Click(Tobject *Sender) /圖像從上下往中間合進(jìn)/   Form1->Refresh( );   HeightHalf=Bitmap1->Height

14、/2+Bitmap1->Height%2;   for(i=0;i<=HeightHalf;i+)        Dest1=Rect(0,0,Bitmap1->Width,i);     Source1=Rect(0,HeightHalf-I,Bitmap1->Width,HeightHalf);    Dest2=Rect(0,Bitmap1->Height-I,Bitmap1->Width,Bitmap1->Heigh

15、t);     Source2=Rect(0,HeightHalf,Bitmap1->Width,HeightHalf+i);    Form1->Canvas->CopyRect(Dest1,Bitmap1->Canvas,Source1);     Form1->Canvas->CopyRect(Dest2,Bitmap1->Canvas,Source2);     for(j=0;j<10000;j+); 

16、60;  7、在Items5的OnClieck事件中添加如下代碼: void_fastcall TForm1:Item5Click(Tobject *Sender) /圖像從左移入/     Form1->Refresh( );   for(i=Bitmap1->Width;i>=0;i-)        Dest1=Rect(0,0,Bitmap1->Width-I,Bitmap1->Height);     Source1

17、=Rect(I,0,Bitmap1->Width,Bitmap1->Height);     Form1->Canvas->CopyRect(Dest1,Bitmap1->Canvas,Source1);     for(j=0;j<10000;j+);    8、在Items6的OnClieck事件中添加如下代碼:   void_fastcall TForm1:Item6Click(Tobject *Sender)   /圖像從右移入/

18、    Form1->Refresh( );   for(i=0;i<=Bitmap1->Width;i+)     Dest1=Rect(Bitmap1->Width-I,0,Bitmap1->Width,Bitmap1->Height);     Source1=Rect(0,0,I,Bitmap1->Height);     Form1->Canvas->CopyRect(Dest1,B

19、itmap1->Canvas,Source1);     for(j=0;j<10000;j+);    9、在Items7的OnClieck事件中添加如下代碼: void_fastcall TForm1:Item7Click(Tobject *Sender) /圖像從上移入/   Form1->Refresh( ); for(i=0;i<=Bitmap1->Height;i+)     Dest1 =Rect(0,0,Bitmap1->Width,i); &

20、#160;   Source1 =Rect(0,Bitmap1->Height-I,Bitmap1->Width,Bitmap1->Height);     Form1->Canvas->CopyRect(Dest1,Bitmap1->Canvas,Source1);     for(j=0;j<10000;j+); 10、在Items8的OnClieck事件中添加如下代碼: void_fastcall TForm1:Item8Click(Tobject *Sen

21、der) /圖像從下移入/   Form1->Refresh( ); for(i=0;i<=Bitmap1->Height;i+)       Dest1 =Rect(0,Bitmap1->Height-I,Bitmap1->Width,Bitmap1->Height);     Source1 =Rect(0,0,Bitmap1->Width,i);     Form1->Canvas->CopyRect(De

22、st1,Bitmap1->Canvas,Source1);    for(j=0;j<10000;j+);      11、在Items9的OnClieck事件中添加如下代碼: void_fastcall TForm1:Item9Click(Tobject *Sender) /圖像從左刷屏顯示/   Form1->Refresh( );   for(i=0;i<=Bitmap1->Width;i+)     Dest1 =Rect(0,

23、0,I,Bitmap1->Height);     Source1 =Rect(0,0,I,Bitmap1->Height);     Form1->Canvas->CopyRect(Dest1,Bitmap1->Canvas,Source1);     for(j=0;j<10000;j+);         12、在Items10的OnClieck事件中添加如下代碼: void_fastcall TForm

24、1:Item10Click(Tobject *Sender) /圖像從右刷屏顯示/   Form1->Refresh( );   for(i=Bitmap1->Width;i>=0;i-)     Dest1 =Rect(i+0,0,0+Bitmap1->Width,0+Bitmap1->Height);     Source1 =Rect(I,0,Bitmap1->Width,Bitmap1->Height);     F

25、orm1->Canvas->CopyRect(Dest1,Bitmap1->Canvas,Source1);     for(j=0;j<10000;j+); 13、在Items11的OnClieck事件中添加如下代碼: void_fastcall TForm1:Item11Click(Tobject *Sender) /圖像從上刷屏顯示/   Form1->Refresh( ); for(i=0;i<=Bitmap1->Height;i+)     Dest1 =Rect

26、(0,0,Bitmap1->Width+0,i+0);     Source1 =Rect(0,0,Bitmap1->Width,i);     Form1->Canvas->CopyRect(Dest1,Bitmap1->Canvas,Source1);     for(j=0;j<10000;j+);    14、在Items12的OnClieck事件中添加如下代碼: void_fastcall TForm1:Item12Click(Tobjec

27、t *Sender) /圖像從下刷屏顯示/   Form1->Refresh( ); for(i=Bitmap1->Height;i>=0;i-)        Dest1 =Rect(0,i+0,Bitmap1->Width+0,Bitmap1->Height+0);     Source1 =Rect(0,I,Bitmap1->Width,Bitmap1->Height);     Form1->Canvas-&g

28、t;CopyRect(Dest1,Bitmap1->Canvas,Source1);     for(j=0;j<10000;j+);    15、在Items13的OnClieck事件中添加如下代碼: void_fastcall TForm1:Item13Click(Tobject *Sender) /圖像從上往下流水/   Form1->Refresh( );   for(i=Bitmap1->Height;i>=0;i-)     Sour

29、ce1 =Rect(0,I,Bitmap1->Width,i+1);     for(int j1=0;j1<=I;j1+)           Dest1 =Rect(0 ,j1,Bitmap1->Width+0,j+1);       Form1->Canvas->CopyRect(Dest1,Bitmap1->Canvas,Source1);     &#

30、160; for(j=0;j<10000;j+);     16、在Items14的OnClieck事件中添加如下代碼: void_fastcall TForm1:Item14Click(Tobject *Sender) /圖像從下往上流水/   Form1->Refresh( ); for(i=0;i<=Bitmap1->Height;i+)     Source1 =Rect(0,I,Bitmap1->Width,i+1);     for(int j

31、1=Bitmap1->Height-1;j1>=I;j1-)           Dest1 =Rect(0,j1,Bitmap1->Width,j1+1);       Form1->Canvas->CopyRect(Dest1,Bitmap1->Canvas,Source1);       for(j=0;j<10000;j+);    &#

32、160; 17、在Items15的OnClieck事件中添加如下代碼: void_fastcall TForm1:Item15Click(Tobject *Sender) /圖像圓形展出/   Form1->Refresh( ); int j1=sqrt(Bitmap1->Width*Bitmap1->Width+Bitmap1->Height*Bitmap1->Height)/2+4; for (i=1;i<j1;i+)         MyRgn=Crea

33、teEllipticRgn(Bitmap1->Width/2-I,Bitmap1->Height/2-I, Bitmap1->Width/2+I,Bitmap1->Height/2+i);     SelectObject(Canvas->Handle,MyRgn);     Canvas->Draw(0,0,Bitmap1);     DeleteObject(MyRgn);     for(j=0;j<10000;j+); 

34、60;   18、在Items16的OnClieck事件中添加如下代碼: void_fastcall TForm1:Item16Click(Tobject *Sender) /圖像左右錯(cuò)移/   Form1->Refresh( ); HeightHalf=Bitmap1->Height/2+Bitmap1->Height%2;   Source1=Rect(0,0,Bitmap1->Width,HeightHalf); Source2=Rect(0,HeightHalf,Bitmap1->Width,Bi

35、tmap1->Height); for(i=0;i<=Bitmap1->Width;i+)          Dest1=Rect(0-Bitmap1->Width+I,0,I,0+HeightHalf);     Dest2=Rect(Bitmap1->Width-I,HeightHalf,              

36、0;   Bitmap1->Width+Bitmap1->Width-I,Bitmap1->Height+0);     Form1->Canvas->MoveTo(0-Bitmap1->Width+i-1,0);     Form1->Canvas->LineTo(0-Bitmap1->Width+i-1,HeightHalf);     Form1->Canvas->CopyRect(Dest1,

37、Bitmap1->Canvas,Source1);     Form1->Canvas->MoveTo(Bitmap1->Width+Bitmap1->Width-I,0);     Form1->Canvas->LineTo(Bitmap1->Width+Bitmap1->Width-I,Bitmap1->Height);     Form1->Canvas->CopyRect(Dest2,Bitmap1->Canvas,Source2);     for(j=0;j<10000;j+);    19、在Items17的OnClieck事件中添加如下代碼: void_fastcall TForm1:Item17Click(Tobject *S

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論