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

首頁 > 學院 > 開發(fā)設(shè)計 > 正文

用兩種方法快速簡單的實現(xiàn)窗口淡入淡出

2019-11-18 18:35:08
字體:
供稿:網(wǎng)友
                   DelphiIdiot(呆飛白癡)
                                       Email:wangsl@dhc.com.cn
                                       QQ:46525765

    在應(yīng)用程序中引入圖片淡入及淡出,可以讓用戶界面更加美觀。以前報刊雜志中介紹
的常用方法有兩種:一是自己寫程序,諸個象素進行混合漸變;二是使用DirectX,建立一
個帶Alpha通道的Surface。第一種,效果可以自己控制,但比較麻煩,而且一般不容易生
成硬件優(yōu)化的代碼;第二種速度很快,卻需要使用DirectX庫。

    本文結(jié)合Delphi實例代碼,介紹兩種簡單快速的實現(xiàn)方法,算是一個總結(jié)吧,希望能
對初學者有所幫助。

一:AnimateWindow函數(shù)的使用:
    (一)函數(shù)原型:
      BOOL AnimateWindow(
         HWND hwnd,     // 要進行特效顯示的窗體的句柄
         DWord dwTime,  // 動畫持續(xù)時間,以毫秒為單位
         DWORD dwFlags  // 動畫類型
         );
    (二)參數(shù)設(shè)置:
         hwnd :用“窗體名.handle”即可,如:Form1.handle;
         dwTime:一般情況下用400比較合適,我偏向于1000;
         dwFlags:可以設(shè)為多種效果,詳見MSDN,這里我只介紹淡入淡出用到的參數(shù)AW_BLEND;
                  如果是淡入,設(shè)為AW_BLEND即可,如果是淡出,設(shè)為AW_BLEND or AW_HIDE。
    (三)程序?qū)嵗?BR>         新建一個工程,在生成的窗體Form1上添加一個按鈕Button1,Button1的Caption設(shè)為“淡
         出”;接下來添加如下兩段代碼,實現(xiàn)淡入淡出:
         1、淡入:雙擊Form1,在其“OnCreate”事件中添加:
             AnimateWindow(Form1.Handle,1000,AW_BLEND);
         2、淡出:雙擊Button1,在其“OnClick”事件中添加:
             AnimateWindow(Form1.Handle,1000,AW_HIDE or AW_BLEND);
             form1.Close;//關(guān)閉窗口

         整個程序的PRocedure如下:
         procedure TForm1.FormCreate(Sender: TObject);
         begin
          AnimateWindow(Form1.Handle,1000,AW_BLEND);
         end;
         procedure TForm1.Button1Click(Sender: TObject);
         begin
          AnimateWindow(Form1.Handle,1000,AW_HIDE or AW_BLEND);
          form1.Close;
         end;
二、AlphaBlend屬性結(jié)合Timer組件
     (一)原理:
          在Delphi6.0以上(6.0以下我不了解),每個窗體有AlphaBlend屬性和AlphaBlendValue
          屬性,將AlphaBlend屬性設(shè)為True,然后在Timer組件中隨著時間改變AlphaBlendValue的
          值(0-255)即可。
     (二)程序?qū)嵗?BR>          新建一個工程,并添加一個窗體Form2,將其AlphaBlend屬性設(shè)置為True;在窗體Form1上添
          加一個按鈕Button1,Caption屬性設(shè)為“淡入”,在Form2上添加一個按鈕Button1,Caption
          屬性設(shè)為“淡出”;另外,在Form2上添加兩個Timer組件Timer1、Timer2,將它們的Interval
          屬性設(shè)為3(越大動畫時間越長),Enable設(shè)為False;接下來添加如下4段代碼:
         1、雙擊Form1上的Button1,在其“OnCreate”事件中添加:
            Form2.AlphaBlendValue:=1;//窗體從透明開始
            Form2.Show;              //顯示窗體Form2
            Form2.BringToFront;      //將窗體Form2移到前端
            Form2.Timer1.Enabled:=true;  //啟動Timer1,控制窗體可見度-增加
         2、雙擊Form2上的Button1,在其“OnCreate”事件中添加:
            Timer2.Enabled:=true;       //啟動Timer2,控制窗體可見度-減少
         3、雙擊Form2上的Timer1,在其“OnTimer”事件中添加:
            Form2.AlphaBlendValue:=Form2.AlphaBlendValue+1;//增加可見度
            Timer2.Enabled:=false;        //停止Timer2
            //如果可見度達到最大,停止Timer1
            if Form2.AlphaBlendValue=255 then 
            timer1.Enabled:=false;
         4、雙擊Form2上的Timer2,在其“OnTimer”事件中添加:
            Form2.AlphaBlendValue:=Form2.AlphaBlendValue-1;//減少可見度
            Timer1.Enabled:=false;        //停止Timer1
            //如果可見度達到最小,停止Timer2
            if Form2.AlphaBlendValue=0 then
            begin 
             timer2.Enabled:=false;
             Form2.Close;
            end;


上一篇:讀取硬盤的物理序列號

下一篇:DirectShow之接口實戰(zhàn)篇(二)

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
學習交流
熱門圖片

新聞熱點

疑難解答

圖片精選

網(wǎng)友關(guān)注

主站蜘蛛池模板: 措勤县| 闻喜县| 青海省| 大洼县| 扎囊县| 灵宝市| 奉贤区| 富顺县| 云梦县| 苗栗县| 辽阳市| 鹤壁市| 体育| 梨树县| 县级市| 古蔺县| 临武县| 天全县| 合肥市| 个旧市| 双桥区| 互助| 芒康县| 菏泽市| 新绛县| 固始县| 武乡县| 从化市| 盐津县| 扎鲁特旗| 鄂伦春自治旗| 罗定市| 唐海县| 辉南县| 敖汉旗| 洛南县| 滕州市| 陇南市| 巴彦县| 衡山县| 临漳县|