六月婷婷综合激情-六月婷婷综合-六月婷婷在线观看-六月婷婷在线-亚洲黄色在线网站-亚洲黄色在线观看网站

明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

DELPHI中使用對象的常用屬性制作動畫

[摘要]林穎 在DELPHI中的所有對象中都有提供了TOP、LEFT、HEIGHT、WIDTH四個屬性,用以控制對象的位置和大小;另外在DELPHI中還提供了一個TIME的構件,利用他們可以方便地實...
林穎

     在DELPHI中的所有對象中都有提供了TOP、LEFT、HEIGHT、WIDTH四個屬性,用以控制對象的位置和大小;另外在DELPHI中還提供了一個TIME的構件,利用他們可以方便地實現一些動畫。

---- 一. 拉幕

---- 拉幕式即從中間往兩邊慢慢顯示畫面。在此把Dbimage1的CENTER屬性設成true;把stretch屬性設成false。把WIDTH屬性設成0,適當設置LEFT的值,使其顯示在屏幕中間。實現動畫主要方法是修改LEFT屬性(值逐漸變小)和WIDTH屬性(值逐漸變大),要注意的是為了讓幕布從中間均勻地向兩邊拉開,WIDTH的改變值必須是LEFT改變值的兩倍。在DIMEER1的ontime事件中輸入如下語句:

    if (dbimage1.left >0) then
         begin
            dbimage1.left:=dbimage1.left-1;
           dbimage1.width:=DBImage1.width+2;
           //dbimage1.width的改變值必須是dbimage1.left改變值的2倍
         end
      else  
         timer1.enabled:=false;//拉幕結束。
---- 把上面程序中的LEFT改為TOP,WIDTH改為HEIGHT就可以實現豎直方向的拉幕。如果把拉幕這種效果運用于文本類型的對象,就可以實現一行一行地顯示文本的效果。

---- 二. 手風琴

---- 在拉幕式的動畫中,當畫面整個顯示后,再把畫面從兩邊往中間慢慢遮住,如此不斷循環,象拉手風琴一樣。實現時,需加入一個變量STATE,用以表明此時的狀態。具體程序如下:

procedure TForm1.Timer1Timer(Sender: TObject);
begin
   if state=1  then
      if (dbimage1.left >0) then
         begin
           dbimage1.left:=dbimage1.left-1;
           dbimage1.width:=DBImage1.width+2;
         end
       else
          //當幕完全拉開后,改變狀態變量
         state:=2
   else
    //從兩邊往中間拉
       if  dbimage1.left< form1.width  div 2 then
        begin
           dbimage1.left:=dbimage1.left+1;
           dbimage1.width:=dbimage1.width-2;
        end
        else
           //當幕合上后,改變狀態變量
           state:=1;
end;
---- 三. 柵欄式

---- 畫面初始被豎直柵欄遮住,然后各條柵欄逐漸變窄,被柵欄分割的畫面逐漸完整起來。在這種動畫中,柵欄的角色由STATICTEXT類型的對象來充當(畫面呈現幾條柵欄就需要幾個STATICTEXT對象)。只需改變STATICTEXT類型對象的LEFT 和 WIDTH屬性即可(LEFT逐漸變大,WIDTH逐漸變小),在TIMER1的ONCLICK事件上,對每一個STATICTEXT對象如下處理:

      if  st1.width >0  then //ST1是STACTICTEXT類型的一個對象
        begin
         st1.width:=st1.width-2;
         st1.left:=st1.left+1 ;
        end
      else
        //再一次循環
         begin
          st1.width:=40;  //WIDTH和LEFT由實際情況決定
          st1.left:=40;
         end;
     
---- 如果把上面的柵欄水平排列,把LEFT改成TOP,把WIDTH改成HEIGHT,則成為百頁窗的效果,大家有興趣的話可以試試。

---- 四. 翻頁

---- 這是一種旋轉的效果,實際上是把TOP的值固定,改變HEIGHT的值,并把STRETCH的值設為TRUE。在TIMER1的ONTIME事件中鍵入以下程序可以實現向上翻頁:

    if  dbimage1.height >0  then
            dbimage1.height:=dbimage1.height-4;
---- 若把上面程序中的HEIGHT的屬性值從小變到大,則實現向下翻頁的效果。若把TOP改成LEFT,把HEIGHT改成WIDTH,則實現左右翻頁的效果。如果把LEFT和WIDTH一起同時改變,則可以使圖片以的某一條通過圖片的豎直線為軸進行旋轉,在TIMER1的ONTIMER事件中,程序如下:

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  if state=1    then
     if dbimage1.width >0  then
        begin
        //畫面逐漸變小
        dbimage1.left:=dbimage1.left+1;
        dbimage1.width:=dbimage1.width-2;
        //width的改變值必須是left改變值的兩倍
        end
     else
        state:=2
  else
     if dbimage1.width< 250  then
        begin
          dbimage1.left:=dbimage1.left-1;
          dbimage1.width:=dbimage1.width+2;
        end
     else
       state:=1

end;
---- 從以上程序可以看出,這是把畫面變小后再慢慢變大,變小是一個狀態(STATE=1),變在是另一個狀態(STATE=2),這兩種狀態交替出現,即可出現動畫。

---- 五. 從畫面外逐漸移(飛)過

---- 在設計封面的時候,經常需要把某標題從某個畫面上飛過。 要實現該類型的動畫實際上只需改變標題的TOP(垂直方向飛過)或LEFT屬性(水平方向飛過)。

---- 例如實現一個標題在一幅畫上從左往右飛過。先在FORM1里建立一個圖形對象DBIMAGE1和文字對象STATICTEXT1(注意TEXT類型的對象無法顯示在圖片上),把位置和大小大小尺寸設好。然后在FORM1里建立一個TIME對象TIME1,把其ENABLED屬性設為TRUE,INTERVAL屬性設為10;并在事件ONTIME里鍵入如下語句:

    procedure TForm1.Timer1Timer(Sender: TObject);
begin
   if statictext1.left< dbimage1.width+dbimage1.left  then
     statictext1..left:=statictext1.left+3
   else
     statictext1.left:=dbimage1.left;
     //當標題飛出圖片后,使標題重新位于圖片的左邊,
      再一次從左向右入屏幕
end;
---- 說明:

如果只想使標題從左向右移動一次,ELSE語句改為Timer1.enabled:=false;

數值3是標題移動的速度值,可以隨意更改

若標題只移到圖片的某一位置,則把“statictext1.left< dbimage1.width+dbimage1.left”改為“statictext1.left< 位置值”,并把ELSE語句改為Timer1.enabled:=false;

只需把LEFT的值從大變到小,則實現從右往左飛過

把上面的LEFT改為TOP,把WIDTH改為HEIGHT,即可實現垂直方向的動畫。
---- 六. 逐漸顯示(即把圖片從某一個邊界逐漸拉出來)

---- 實現這一類型的動畫不但要改變TOP、LEFT屬性,還要改變HEIGHT和WIDTH屬性。 例:把一幅畫從右邊往左邊拉(右切入)。在上例中以DBIMAGE1為例。這時要把Dbimage1的center和stretch屬性設為FALSE。圖片的左邊界放在FORM1的右邊界處,WIDTH設為0。

    procedure TForm1.timer1Timer(Sender: TObject);
begin
       if  dbimage1.left >0then
            begin
             dbimage1.left:=dbimage1.left-3;
             dbimage1.width:=dbimage1.width+3;
//LEFT的改變值與WIDTH的改變值必須一樣
             end
        else
          begin
             dbimage1.left:=form1.width;
             dbimage1.width:=0;
          end;
end;
---- 說明:

把上面的LEFT改為TOP,WIDTH改為HEIGHT即可實現從下往上拉(下切入)。

若只切入到某一點,可以把“Dbimage1.left >0”中的0改為設定點的坐標,并把ELSE 語句改為 Timer1.enabled:=false;
---- 盡管DELPHI提供了不少關于動畫方面的開發工具,但是只要稍稍修改一下屬性即可輕輕松松地實現常見的一些特技顯示,你愿意試一下嗎?



主站蜘蛛池模板: 日本五级床片午夜视频 | 人人看人人爱 | 四虎精品永久在线 | 天干天夜啪天天碰 | 性色a v 一区 | 日本高清视频在线的 | 亚洲欧美日韩在线播放 | 日本视频网站在线观看 | 日韩精品一区二区三区不卡 | 天天草狠狠干 | 亚洲一区色 | 小视频在线观看免费播放 | 日韩a在线看免费观看视频 日韩a在线观看免费观看 | 亚洲经典自拍 | 色婷婷影院在线视频免费播放 | 日韩在线视 | 四虎永久在线观看视频精品 | 四虎影院观看视频 | 日本乱中文字幕系列在线观看 | 亚洲国产99| 天天躁日日躁狠狠躁一级毛片 | 四虎在线影视在线影库 | 亚洲日本欧美日韩高观看 | 亚洲欧美日本在线 | 日韩不卡在线 | 亚欧人成精品免费观看 | 亚州精品视频 | 天天翘夜夜洗澡天天做 | 最新四虎4hu影库地址在线 | 一级做a爱片| 亚洲第一精品夜夜躁人人爽 | 天天看夜夜操 | 亚洲欧美日韩不卡一区二区三区 | 天天干天天综合 | 色综合天天综合中文网 | 四方色播 | 中文字幕三级在线不卡 | 天天摸天天干 | 庆余年第二部在线观看免费完整版 | 手机福利视频一区二区 | 亚洲国产成人久久综合一 |