在 WinForms 應用中播放透明背景的 AVI 動畫,標準 MediaPlayer 控制項無法直接支援。本文介紹使用 Windows 通用控制項 `SysAnimate32` (COMCTL32.ocx) 實現透明背景 AVI 播放的完整步驟。
SysAnimate32 控制項(位於 `C:\Windows\System32\COMCTL32.ocx`)原生支援透明背景 AVI 播放,屬性 `BackStyle = 0` (透明) 即可實現。
// 通常 Windows 已預先註冊,若未註冊:
// regsvr32 C:\Windows\System32\COMCTL32.ocx
// Visual Studio 工具箱 → 右鍵 "Choose Items" → COM Components
// 勾選 "Microsoft Animation Control" (Animation Control 類別)
// 會產生 AxAnimation.dll 與 Animation.dll 互通組件
public partial class TransparentAviForm : Form
{
private AxAnimation.AxAnimation _animationControl;
public TransparentAviForm()
{
InitializeComponent();
InitializeAnimationControl();
}
private void InitializeAnimationControl()
{
_animationControl = new AxAnimation.AxAnimation();
((System.ComponentModel.ISupportInitialize)(_animationControl)).BeginInit();
// 關鍵屬性設定
_animationControl.Enabled = true;
_animationControl.Location = new Point(50, 50);
_animationControl.Name = "axAnimation1";
_animationControl.Size = new Size(200, 150);
_animationControl.TabIndex = 0;
// 核心:透明背景
_animationControl.BackStyle = 0; // 0 = 透明, 1 = 不透明
// 可選:自動播放
_animationControl.AutoPlay = true;
((System.ComponentModel.ISupportInitialize)(_animationControl)).EndInit();
this.Controls.Add(_animationControl);
}
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
LoadAndPlayAvi();
}
private void LoadAndPlayAvi()
{
string aviPath = Path.Combine(Application.StartupPath, "loading.avi");
if (File.Exists(aviPath))
{
// 開啟 AVI 檔案
_animationControl.Open(aviPath);
// AutoPlay = true 時會自動開始播放
// 若需手動控制:
// _animationControl.Play(0, -1, -1); // 從第 0 幀播放到結尾,重複 -1 次(無限)
}
else
{
MessageBox.Show($"找不到 AVI 檔案:{aviPath}");
}
}
// 手動控制播放範例
private void btnPlay_Click(object sender, EventArgs e)
{
_animationControl.Play(0, -1, -1);
}
private void btnStop_Click(object sender, EventArgs e)
{
_animationControl.Stop();
}
private void btnSeek_Click(object sender, EventArgs e)
{
_animationControl.Seek(10); // 跳至第 10 幀
}
}
對於純 WinForms 專案需播放透明背景 AVI,`Animation` 控制項是最輕量、原生的解決方案。關鍵在於:
新專案建議考慮 WPF/Lottie/WebView2 等現代方案,獲得更好的格式支援與維護性。