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

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

用兩種方法快速簡單的實現窗口淡入淡出

2019-11-18 17:58:40
字體:
來源:轉載
供稿:網友

我的主頁: http://www.tommstudio.com/

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

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

一:AnimateWindow函數的使用:
    (一)函數原型:


BOOL AnimateWindow(
HWND hwnd,     // 要進行特效顯示的窗體的句柄
         DWord dwTime,  // 動畫持續時間,以毫秒為單位
         DWORD dwFlags  // 動畫類型
         );


    (二)參數設置:
         hwnd :用“窗體名.handle”即可,如:Form1.handle;
         dwTime:一般情況下用400比較合適,我偏向于1000;
         dwFlags:可以設為多種效果,詳見MSDN,這里我只介紹淡入淡出用到的參數AW_BLEND;
                  如果是淡入,設為AW_BLEND即可,如果是淡出,設為AW_BLEND or AW_HIDE。
    (三)程序實例:
         新建一個工程,在生成的窗體Form1上添加一個按鈕Button1,Button1的Caption設為“淡
         出”;接下來添加如下兩段代碼,實現淡入淡出:
         1、淡入:雙擊Form1,在其“OnCreate”事件中添加:


AnimateWindow(Form1.Handle,1000,AW_BLEND);


         2、淡出:雙擊Button1,在其“OnClick”事件中添加:


AnimateWindow(Form1.Handle,1000,AW_HIDE or AW_BLEND);
form1.Close;//關閉窗口



         整個程序的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;

         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屬性結合Timer組件
     (一)原理:
          在Delphi6.0以上(6.0以下我不了解),每個窗體有AlphaBlend屬性和AlphaBlendValue
          屬性,將AlphaBlend屬性設為True,然后在Timer組件中隨著時間改變AlphaBlendValue的
          值(0-255)即可。
     (二)程序實例:
          新建一個工程,并添加一個窗體Form2,將其AlphaBlend屬性設置為True;在窗體Form1上添
          加一個按鈕Button1,Caption屬性設為“淡入”,在Form2上添加一個按鈕Button1,Caption
          屬性設為“淡出”;另外,在Form2上添加兩個Timer組件Timer1、Timer2,將它們的Interval
          屬性設為3(越大動畫時間越長),Enable設為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;

            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;




上一篇:支持自繪畫的屬性編輯器

下一篇:TWebBrowser的常見屬性和方法

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

新聞熱點

疑難解答

圖片精選

網友關注

主站蜘蛛池模板: 青铜峡市| 北宁市| 凌云县| 岳池县| 娄底市| 延吉市| 三河市| 武邑县| 南皮县| 长乐市| 闽清县| 两当县| 西充县| 秭归县| 巢湖市| 石城县| 蛟河市| 香港| 桃江县| 鹤岗市| 奎屯市| 独山县| 金溪县| 南雄市| 阿图什市| 启东市| 巴林右旗| 鹿泉市| 府谷县| 白银市| 靖边县| 峡江县| 娄烦县| 清丰县| 阿城市| 灵宝市| 龙口市| 巩义市| 新兴县| 保山市| 龙口市|