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

C# 播放透明背景 AVI:使用 Animation 控制項替代 MediaPlayer

     編輯:關於C語言

前言

專案需求:WinForms 應用程式播放短小 AVI 動畫,且背景必須透明。標準 MediaPlayer (msdxm.ocx) 無透明背景支援。本文記錄嘗試過程,並提供使用 Animation 控制項 (COMCT32.ocx) 解決問題的完整步驟。

嘗試 1:MediaPlayer (msdxm.ocx) — 失敗

  1. 執行 aximp c:\winnt\system32\msdxm.ocx 產生 MediaPlayer.dll、AxMediaPlayer.dll
  2. 執行 regsvr32 msdxm.ocx 註冊 ActiveX
  3. 引用生成的組件,可播放多種媒體格式
  4. 致命缺陷:無屬性控制背景透明,播放 AVI 時背景固定為黑色或其他實色

解決方案:Animation 控制項 (COMCT32.ocx)

發現 VB6 專案使用 Animation 控制項可播放透明背景 AVI,遂嘗試移植至 C#。

步驟 1:註冊控制項

regsvr32 C:\Windows\SYSTEM32\COMCT32.ocx

注意:.NET Framework 安裝時通常已自動註冊,手動註冊可能提示「已成功註冊」或「模組已載入」。

步驟 2:Visual Studio 加入工具箱

  1. 右鍵工具箱 →「選擇項目」→「COM 元件」頁籤
  2. 勾選「Microsoft Animation Control」或類似名稱
  3. 確定後工具箱出現 Animation 控制項圖示

步驟 3:表單設計與屬性設定

  1. 拖曳 axAnimation1 至表單
  2. 設定 AutoPlay = true(表單載入自動播放)
  3. 關鍵屬性:Transparent = true(啟用背景透明)

步驟 4:程式碼載入 AVI 檔案

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 動畫、等待指示器、啟動畫面

AVI 檔案需求

  • 非壓縮 或 RLE 壓縮 (Microsoft Video 1 等)
  • 包含 Alpha 通道或指定透明色的 256 色調色盤
  • 檔案不宜過大(建議 < 1MB),否則載入緩慢

避坑指南

  • 不要用 regsvr32 重複註冊:.NET 安裝已完成,重複註冊可能導致版本衝突
  • 部署時攜帶 AVI 檔:Application.StartupPath 確保相對路徑正確
  • 64 位系統:COMCT32.ocx 為 32 位,專案需設定 Prefer 32-bit 或目標平台 x86
  • 替代方案:WPF 專案可用 MediaElement + 透明背景;現代專案建議用 GIF/WebP + PictureBox

總結

若需 WinForms 播放透明背景 AVI,Animation 控制項 (COMCT32.ocx) 是唯一原生支援透明背景的 ActiveX 方案。雖功能簡單(僅播放/停止、無音訊),但完美滿足「UI 裝飾動畫」需求。現代專案建議評估 GIF/WebP + PictureBox 或 WPF MediaElement 替代方案。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved