版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 辦公樓外墻清洗高空作業(yè)合同2025
- 網(wǎng)紅現(xiàn)象對中學(xué)生審美價(jià)值觀的雙重影響及引導(dǎo)策略研究
- 邢臺地貌特征
- 2025年政府專職消防員入職考試復(fù)習(xí)參考題庫及答案(共90題)
- 2025年醫(yī)院三基知識考試試題庫及答案(共180題)
- 移動(dòng)筆試題目及最佳答案
- 2025年小學(xué)科學(xué)新考試題及答案
- 2025年體內(nèi)藥物分析題庫及答案
- 江門統(tǒng)考數(shù)學(xué)試卷及答案
- 浙江單招筆試題庫及答案
- 國家開放大學(xué)期末機(jī)考理工英語3
- 醫(yī)院布草洗滌服務(wù)方案(技術(shù)方案)
- 游戲:看表情符號猜成語PPT
- 手術(shù)室醫(yī)療廢物的管理
- 普通機(jī)床主傳動(dòng)系統(tǒng)的設(shè)計(jì)課程設(shè)計(jì)說明書
- 班組工程進(jìn)度款申請表
- 四年級閱讀訓(xùn)練概括文章主要內(nèi)容(完美)
- JJG 1033-2007電磁流量計(jì)
- GB/T 629-1997化學(xué)試劑氫氧化鈉
- GB/T 37234-2018文件鑒定通用規(guī)范
- GB/T 2895-2008塑料聚酯樹脂部分酸值和總酸值的測定
評論
0/150
提交評論