專案需求:WinForms 應用程式播放短小 AVI 動畫,且背景必須透明。標準 MediaPlayer (msdxm.ocx) 無透明背景支援。本文記錄嘗試過程,並提供使用 Animation 控制項 (COMCT32.ocx) 解決問題的完整步驟。
aximp c:\winnt\system32\msdxm.ocx 產生 MediaPlayer.dll、AxMediaPlayer.dllregsvr32 msdxm.ocx 註冊 ActiveX發現 VB6 專案使用 Animation 控制項可播放透明背景 AVI,遂嘗試移植至 C#。
regsvr32 C:\Windows\SYSTEM32\COMCT32.ocx
注意:.NET Framework 安裝時通常已自動註冊,手動註冊可能提示「已成功註冊」或「模組已載入」。
axAnimation1 至表單AutoPlay = true(表單載入自動播放)Transparent = true(啟用背景透明)private void Form1_Load(object sender, EventArgs e)
{
// 使用相對路徑,確保部署時檔案同在
string aviPath = Path.Combine(Application.StartupPath, "FILECOPY.AVI");
this.axAnimation1.Open(aviPath);
}
| 項目 | MediaPlayer (msdxm.ocx) | Animation (COMCT32.ocx) |
|---|---|---|
| 支援格式 | 多種 (AVI, MPG, WMV, MP3...) | 僅 AVI (非壓縮或 RLE 壓縮) |
| 背景透明 | 不支援 | 支援 (Transparent 屬性) |
| 控制複雜度 | 高 (完整播放控制) | 低 (簡單播放/停止) |
| 適用場景 | 媒體播放器 | UI 動畫、等待指示器、啟動畫面 |
Application.StartupPath 確保相對路徑正確Prefer 32-bit 或目標平台 x86MediaElement + 透明背景;現代專案建議用 GIF/WebP + PictureBox若需 WinForms 播放透明背景 AVI,Animation 控制項 (COMCT32.ocx) 是唯一原生支援透明背景的 ActiveX 方案。雖功能簡單(僅播放/停止、無音訊),但完美滿足「UI 裝飾動畫」需求。現代專案建議評估 GIF/WebP + PictureBox 或 WPF MediaElement 替代方案。