首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C# 窗體動畫顯示(三):完整代碼與 AnimateWindow 參數詳解

     編輯:關於C語言

完整可運行代碼


using System;
using System.Runtime.InteropServices;
using System.Windows.Forms;

namespace FlashWindow
{
    public partial class Form1 : Form
    {
        [DllImport("user32.dll")]
        private static extern bool AnimateWindow(IntPtr hwnd, int dwTime, int dwFlags);

        // 動畫標誌常量
        private const int AW_HOR_POSITIVE = 0x00000001;
        private const int AW_HOR_NEGATIVE = 0x00000002;
        private const int AW_VER_POSITIVE = 0x00000004;
        private const int AW_VER_NEGATIVE = 0x00000008;
        private const int AW_CENTER = 0x00000010;
        private const int AW_HIDE = 0x00010000;
        private const int AW_ACTIVATE = 0x00020000;
        private const int AW_SLIDE = 0x00040000;
        private const int 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);
        }
    }
}

參數組合效果對照表

注意事項

  • AnimateWindow 僅對顯式顯示/隱藏的窗體有效(Show()/Hide()/Close()),不影響已可見窗體。
  • 動畫期間窗體不可交互,耗時過長(>2秒)會影響體驗。
  • 多顯示器環境下,坐標基於虛擬屏幕,效果可能跨屏。
  • 遠程桌面/虛擬機中動畫可能被禁用或卡頓。

進階:自定義動畫

若需更豐富效果(彈性、旋轉、不規則形狀),需自行在 OnPaint 中配合 Timer 實現,或使用 WPF Storyboard、Composition API (WinUI 3)。

系列總結

  1. 引入 AnimateWindow API、參數聲明、基本用法。
  2. 詳細參數組合效果表、打開/關閉代碼片段。
  3. 本文:完整可編譯代碼、參數對照表、注意事項、進階方向。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
組合效果描述
AW_SLIDE | AW_CENTER從中心點向四周展開(打開)
AW_SLIDE | AW_HOR_POSITIVE從左向右滑入
AW_SLIDE | AW_HOR_NEGATIVE從右向左滑入
AW_SLIDE | AW_VER_POSITIVE從上向下滑入
AW_SLIDE | AW_VER_NEGATIVE從下向上滑入
AW_BLEND淡入/淡出(不支持標題欄)
AW_HIDE配合其他標誌實現關閉動畫
AW_ACTIVATE激活窗口(打開時使用)