程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> 關於C# >> C#中如何制作以動畫的形式顯示窗體

C#中如何制作以動畫的形式顯示窗體

編輯:關於C#

一般的, 當我們啟動一個應用程序後, 普通的應用程序窗口都是瞬間顯示到屏幕上. 您是 否想象過這樣一種情景 : 打開一個應用程序後, 窗口的顯示跟幻燈片一樣變幻莫測,豐富多 彩? 也許不能登大雅之堂, 但至少可以娛樂自己.

好了, 進入正題: 您現在可以想 象這樣一幅畫面: 當您啟動一個應用程序後, 顯示器中央出現一個小點, 然後慢慢變大, 向 四周不斷擴展, 直到窗口全部顯示. 而當您關閉它時它又會從上向下慢慢地從顯示器中消 失....這將是什麼效果? 呵呵, 如果您願意, 下面就跟著我一起完成這樣一個偉大的夢想 吧.

設計思路是什麼呢? 如果您很聰明, 會馬上意識到這個工程很可能要用到 Windows提供 API. 上網一查, 果然有一個函數 : AnimateWindow, 它可以實現窗體的動畫效 果. 所以剩下的工作就是查看 MSDN, 了解更多的關於 AnimateWindow 函數的信息.

下面結合本例詳細介紹 AnimateWindow 函數在 C#中的應用.

聲明方式:  

聲明
[DllImportAttribute("user32.dll")]
private static extern bool AnimateWindow(IntPtr hwnd, int dwTime, int  dwFlags);

參數說明:

Code
(1). IntPtr hwnd: 目標窗口 的句柄對象, 一般為 this.Handle
(2). int dwTime: 動畫的持續時間, 數值越大動 畫效果的時間越長
(3). int dwFlags: 動畫效果類型選項, 在C#中聲明如下:
注: 您程序中只聲明需要的動畫類型即可, 關於每個參數的含義會在後面詳細說明
public const Int32 AW_HOR_POSITIVE = 0x00000001;
public const Int32 AW_HOR_NEGATIVE = 0x00000002;
public const Int32 AW_VER_POSITIVE = 0x00000004;
public const Int32 AW_VER_NEGATIVE = 0x00000008;
public const Int32 AW_CENTER = 0x00000010;
public const Int32 AW_HIDE = 0x00010000;
public const Int32 AW_ACTIVATE = 0x00020000;
public const Int32 AW_SLIDE = 0x00040000;
public const Int32 AW_BLEND = 0x00080000;

動畫效果類型詳細說明表:

1. AW_SLIDE : 使用滑動類型 , 默認為該類型. 當使用 AW_CENTER 效果時, 此效果被忽略

2. AW_ACTIVE: 激活窗 口, 在使用了 AW_HIDE 效果時不可使用此效果

3. AW_BLEND: 使用淡入效果

4. AW_HIDE: 隱藏窗口

5. AW_CENTER: 與 AW_HIDE 效果配合使用則效果為窗 口幾內重疊, 單獨使用窗口向外擴展.

6. AW_HOR_POSITIVE : 自左向右顯示窗口

7. AW_HOR_NEGATIVE: 自右向左顯示窗口

8. AW_VER_POSITVE: 自頂向下顯示 窗口

9. AW_VER_NEGATIVE : 自下向上顯示窗口

看懂了這些, 下面我們的工作 會變得非常簡單.

啟動程序後, 動畫效果顯示窗口的代碼如下:

Code
AnimateWindow(this.Handle, 1000, AW_SLIDE + AW_CENTER);

而關閉程序 後, 動畫效果顯示窗口代碼如下:

Code
private void Form1_FormClosed(object sender, FormClosedEventArgs e)
    {
       AnimateWindow(this.Handle, 500, AW_SLIDE + AW_VER_POSITIVE + AW_HIDE);
    }

程序的完整代碼如下:

Code
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;
namespace FalshWindows
{
   public partial class Form1 : Form
  {
    [DllImportAttribute ("user32.dll")]
    private static extern bool AnimateWindow (IntPtr hwnd, int dwTime, int dwFlags);
    public const Int32 AW_HOR_POSITIVE = 0x00000001;
    public const Int32 AW_HOR_NEGATIVE = 0x00000002;
    public const Int32 AW_VER_POSITIVE = 0x00000004;
     public const Int32 AW_VER_NEGATIVE = 0x00000008;
    public const Int32 AW_CENTER = 0x00000010;
    public const Int32 AW_HIDE = 0x00010000;
    public const Int32 AW_ACTIVATE = 0x00020000;
     public const Int32 AW_SLIDE = 0x00040000;
    public const Int32 AW_BLEND = 0x00080000;
    public Form1()
    {
       InitializeComponent();
      AnimateWindow(this.Handle, 1000, AW_SLIDE + AW_CENTER);
    }
    private void Form1_FormClosed (object sender, FormClosedEventArgs e)
    {
       AnimateWindow(this.Handle, 500, AW_SLIDE + AW_VER_POSITIVE + AW_HIDE);
     }
  }
}

後記: 雖為一雕蟲小技,但蘊涵著很多思想, 大 家可以眼高, 但手一定要底. 

必得原理,編程是件很快樂的事.

文章來源: http://www.cnblogs.com/ziyiFly/archive/2008/09/18/1293327.html

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved