1. 添加音頻文件到項目
- 將音頻文件(如.mp3/.wav)放入項目文件夾(如
Resources
) - 在解決方案資源管理器中右鍵文件 → 屬性:
- 生成操作:選擇
Resource
(嵌入資源)或Content
(內容文件) - 復制到輸出目錄:選擇
始終復制
- 生成操作:選擇
2. 創建啟動界面窗口
新建一個WPF窗口作為啟動界面(如SplashScreenWindow.xaml
):
<Window x:Class="YourNamespace.SplashScreenWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"WindowStyle="None" AllowsTransparency="True" Background="Transparent" WindowStartupLocation="CenterScreen"><Grid><!-- 添加你的啟動界面內容(如圖片、進度條等) --><Image Source="splash_image.png"/></Grid>
</Window>
3. 在啟動界面后臺代碼中播放音樂
修改SplashScreenWindow.xaml.cs
:
using System.Windows;
using System.Windows.Media;public partial class SplashScreenWindow : Window
{private MediaPlayer _mediaPlayer;public SplashScreenWindow(){InitializeComponent();Loaded += OnLoaded;}private void OnLoaded(object sender, RoutedEventArgs e){// 初始化媒體播放器_mediaPlayer = new MediaPlayer();_mediaPlayer.MediaEnded += (s, args) => {_mediaPlayer.Position = TimeSpan.Zero; // 循環播放_mediaPlayer.Play();};try{// 加載音頻資源(根據文件屬性選擇路徑格式)Uri audioUri = new Uri("pack://application:,,,/Resources/background_music.mp3");_mediaPlayer.Open(audioUri);_mediaPlayer.Play();}catch (Exception ex){MessageBox.Show($"播放音樂失敗: {ex.Message}");}}// 窗口關閉時停止音樂protected override void OnClosed(EventArgs e){_mediaPlayer?.Stop();_mediaPlayer?.Close();base.OnClosed(e);}
}
4. 修改App.xaml.cs啟動邏輯
在App.xaml.cs
中顯示啟動界面,并在主窗口顯示后關閉它:
protected override void OnStartup(StartupEventArgs e)
{// 創建并顯示啟動窗口var splashScreen = new SplashScreenWindow();splashScreen.Show();// 模擬初始化耗時操作System.Threading.Thread.Sleep(3000); // 實際中替換為真實初始化代碼// 創建主窗口var mainWindow = new MainWindow();mainWindow.Show();// 關閉啟動窗口splashScreen.Close();base.OnStartup(e);
}
關鍵點說明
-
音頻文件路徑:
- 若文件屬性為
Resource
,使用:"pack://application:,,,/YourAssemblyName;component/Resources/background_music.mp3"
- 若為
Content
,使用:"Resources/background_music.mp3"
(相對輸出目錄路徑)
- 若文件屬性為
-
媒體播放器控制:
MediaPlayer.Play()
:開始播放MediaPlayer.Stop()
:停止并重置位置MediaPlayer.Close()
:釋放資源- 訂閱
MediaEnded
事件實現循環播放
-
資源釋放:
務必在窗口關閉時停止并釋放MediaPlayer
,避免資源泄漏。
替代方案:使用App.xaml全局播放
如果需要在主窗口繼續播放音樂,可將播放器移至App
類:
// App.xaml.cs
public partial class App : Application
{private MediaPlayer _mediaPlayer;protected override void OnStartup(StartupEventArgs e){_mediaPlayer = new MediaPlayer();_mediaPlayer.Open(new Uri("pack://application:,,,/Resources/background_music.mp3"));_mediaPlayer.Play();// 顯示啟動窗口和主窗口(同上)base.OnStartup(e);}// 應用退出時停止音樂protected override void OnExit(ExitEventArgs e){_mediaPlayer?.Stop();_mediaPlayer?.Close();base.OnExit(e);}
}
常見問題處理
- 音樂無法播放:檢查文件路徑、屬性設置和文件格式(WPF支持.mp3, .wav等)。
- 音量控制:通過
_mediaPlayer.Volume = 0.5;
調整音量(0.0~1.0)。 - 異步加載:如果初始化耗時,使用
async/await
避免界面卡頓。
通過以上步驟,即可在WPF啟動界面實現背景音樂的播放和自動管理。