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

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

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 | 欧洲成人在线 | 四虎影在线永久免费观看 | 亚洲伊人久久大香线焦 | 亚洲精品网站在线 | 欧美专区一区二区三区 | 天天干天天拍天天操 | 色婷婷久久综合中文久久蜜桃 | 欧美一级免费观看 | 婷婷综合激情五月中文字幕 | 亚洲国产艾杏在线观看 | 中文精品久久久久国产网站 | 五色婷婷 | 日本高清天码一区在线播放 | 四虎最新视频 | 亚洲天堂99 | 欧美综合国产精品日韩一 | 五月激情综合婷婷 | 四虎www成人影院免费观看 | 亚洲mv日韩mv欧美mv | 日韩亚洲欧洲在线com91tv | 香蕉免费一区二区三区 | 一区二区精品久久 | 亚州免费一级毛片 |