国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

利用CB開發特殊的屏幕顯示效果

2019-11-17 05:35:02
字體:
來源:轉載
供稿:網友

  以前,程序員在DOS平臺下開發應用軟件時,都會利用DOS的開放性特點,通過中斷編寫出一些非凡的顯示效果,以此來給自己的程序增加一些有趣的特色。然而,隨著面向Windows的編程和可視化的第四代開發工具的逐步使用,人們越來越被Windows的統一的編程風格所束縛,同時由于Windows直接治理中斷,想用原來的方法來實現一些非凡的顯示效果變得越來越困難了。

  那么,在Windows時代程序員如何來實現窗口的非凡效果呢?實際上,由于整個Windows是圖形顯示系統,因此對系統而言,用戶程序的每一個界面、窗口都是系統的一個畫布。程序員可以利用這一特點來實現窗口的非凡效果。

  最近筆者利用C++ Builder 5.0 EnterPRise成功的實現了該項功能,現介紹如下:

1、在BCB中建立一個工程文件project1.dpr,在Form1中添加如下控件:

   控件名稱         屬性            值
   Tform          Color          clBTnText
    TMainMenu       Name         MainMneu1
   Timage        Name         Image1
              Align          alClient
            AutoSize       True

  同時在 MainMenu1控件中增加一個菜單項,其屬性為:
   Name             Caption
   Items1           圖像從中間往左右分出
   Items2           圖像從左右往中間合進
   Items3           圖像從中間往上下分出
   Items4           圖像從上下往中間合進
   Items5           圖像從左移入
   Items6           圖像從右移入
   Items7           圖像從上移入
   Items8           圖像從下移入
   Items9           圖像從左刷屏顯示
   Items10          圖像從右刷屏顯示
   Items11          圖像從上刷屏顯示
   Items12          圖像從下刷屏顯示
   Items13          圖像從上往下流水
   Items14          圖像從下往上流水
   Items15          圖像圓形展出
   Items16          圖像左右錯移
   Items17          圖像上下錯移

  同時在Unit.cpp中的private中添加如下變量:
  private:
   B99vMAP 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)//進行圖像特效顯示的初始化操作//
  {      
    Graphics::Tbitmap *Bitmap1 = new Graphics::Tbitmap();//定義一個圖象句柄//
   Bitmap1->LoadFromFile("C://factory.bmp");//設定所要特效顯示的圖象為factory.bmp//
   if(GetDeviceCaps(Form1->Canvas->Handle,B99vSPIXEL)==8)//取得顯示窗口的顏色屬性//
   {
     GetObject(Bitmap1->Handle,sizeof(B99vMAP),(LPSTR)&bm);
    if (bm.bmBitsPixel==8)//假如特效顯示的圖象顏色屬性為256色//

    {
      SelectPalette(Form1->Canvas->Handle,Bitmap1->Palette,FALSE);//從特效顯示的顏色畫板中提取配色方案//
     RealizePalette(Form1->Canvas->Handle); //在顯示窗口中設置配色方案//
    }
    Bitmap->HandleType=bmDDB;
   }
    }    

3、在Items1的OnClieck事件中添加如下代碼:

  void__fastcall 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);
      Source1=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)
  {                   //圖像從左右往中間合進//
    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->Width-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__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);
      Source1=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);
      Form1->Canvas->CopyRect(Dest2,BmpHandle->Canvas,Source2);
      for(j=0;j<10000;j++);
    }
  }

6、在Items4的OnClieck事件中添加如下代碼:


  void__fastcall TForm1::Item4Click(Tobject *Sender)
  {                 //圖像從上下往中間合進//
    Form1->Refresh( );
    HeightHalf=Bitmap1->Height/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->Height);
      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++);
    }
  }

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=Rect(I,0,Bitmap1->Width,Bitmap1->Height);
   

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 五指山市| 棋牌| 唐山市| 咸阳市| 鸡西市| 出国| 子长县| 南城县| 祥云县| 嫩江县| 吴江市| 曲阜市| 马尔康县| 平谷区| 迁安市| 崇州市| 宁乡县| 兴化市| 板桥市| 贵州省| 禹城市| 镇安县| 滨州市| 蓬安县| 右玉县| 科技| 宣城市| 石首市| 栾城县| 新昌县| 乌审旗| 二连浩特市| 景谷| 囊谦县| 突泉县| 永修县| 田林县| 宜良县| 北海市| 松潘县| 密云县|