WPF為啟動界面(Splash Screen)添加背景音樂

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);
}

關鍵點說明

  1. 音頻文件路徑

    • 若文件屬性為Resource,使用:"pack://application:,,,/YourAssemblyName;component/Resources/background_music.mp3"
    • 若為Content,使用:"Resources/background_music.mp3"(相對輸出目錄路徑)
  2. 媒體播放器控制

    • MediaPlayer.Play():開始播放
    • MediaPlayer.Stop():停止并重置位置
    • MediaPlayer.Close():釋放資源
    • 訂閱MediaEnded事件實現循環播放
  3. 資源釋放
    務必在窗口關閉時停止并釋放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啟動界面實現背景音樂的播放和自動管理。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/915242.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/915242.shtml
英文地址,請注明出處:http://en.pswp.cn/news/915242.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【Jmeter】報錯:An error occured:Unknown arg

問題 調試Jmeter時&#xff0c;報錯&#xff1a;‘An error occurred: Unknown arg: l’&#xff0c;腳本如下&#xff1a; $JMETER_PATH -n -t "$target_jmx" -l "$SCENARIO_REPORT_DIR/result_${threads}.jtl" -e -o "$SCENARIO_REPORT_DIR/htm…

vue3使用KeepAlive組件及一些注意事項

目錄 一、KeepAlive的作用 二、緩存組件配置 2.1、過濾緩存組件 2.2、最大緩存實例數 三、KeepAlive組件的生命周期 四、錯誤用法 4.1、緩存v-if包裹的動態組件 4.2、拼寫錯誤 一、KeepAlive組件的作用 首先&#xff0c;keep-alive是一個vue的內置組件&#xff0c;官網…

辛普森悖論

辛普森悖論第一步&#xff1a;概念拆解想象你在比較兩個班級的考試成績&#xff1a;?第一天?&#xff1a;實驗組&#xff08;1個學生考了90分&#xff09;&#xff0c;對照組&#xff08;99個學生平均考了80分&#xff09;?第二天?&#xff1a;實驗組&#xff08;50個學生平…

有效的括號數據結構oj題(力口20)

目錄 目錄 題目描述 題目分析解析 解決代碼 寫題感悟&#xff1a; 題目描述 還有實例 題目分析解析 對于這個題目&#xff0c;我們首先有效字符串需要滿足什么&#xff0c;第一個左右括號使用相同類型的括號&#xff0c;這好理解&#xff0c;無非就是小括號和小括號大括號…

Mock 單元測試

作者&#xff1a;小凱 沉淀、分享、成長&#xff0c;讓自己和他人都能有所收獲&#xff01; 本文的宗旨在于通過簡單干凈實踐的方式教會讀者&#xff0c;如何使用 Mock (opens new window)進行工程的單元測試&#xff0c;以便于驗證系統中的獨立模塊功能的健壯性。 從整個工程所…

MySQL 深度性能優化配置實戰指南

?? 一、硬件與系統層優化:夯實性能基石 ??硬件選型策略?? ??CPU??:讀密集型場景選擇多核CPU(如32核);寫密集型場景選擇高主頻CPU(如3.5GHz+)。 ??內存??:建議≥64GB,??緩沖池命中率≥99%?? 是性能關鍵指標。 ??存儲??:??必用NVMe SSD??,I…

Visual Studio Code(VSCode)中設置中文界面

在VS Code中設置中文界面主要有兩種方法&#xff1a;通過擴展市場安裝中文語言包或通過命令面板直接切換語言。?方法一&#xff1a;通過擴展市場安裝中文語言包?打開VS Code&#xff0c;點擊左側活動欄的"擴展"圖標&#xff08;或按CtrlShiftX&#xff09;。在搜索…

叉車機器人如何實現托盤精準定位?這項核心技術的原理和應用是什么?

隨著智慧物流和智能制造的加速發展&#xff0c;智能化轉型成為提升效率、降低成本的關鍵路徑&#xff0c;叉車機器人&#xff08;AGV/AMR叉車&#xff09;在倉儲、制造、零售等行業中的應用日益廣泛。 其中&#xff0c;托盤定位技術是實現其高效、穩定作業的核心環節之一&…

NO.6數據結構樹|二叉樹|滿二叉樹|完全二叉樹|順序存儲|鏈式存儲|先序|中序|后序|層序遍歷

樹與二叉樹的基本知識 樹的術語結點&#xff1a; 樹中的每個元素都稱為結點&#xff0c; 例如上圖中的 A,B,C…根結點&#xff1a; 位于樹頂部的結點&#xff0c; 它沒有父結點,比如 A 結點。父結點&#xff1a; 若一個結點有子結點&#xff0c; 那么這個結點就稱為其子結點的父…

數據集下載網站

名稱簡介鏈接Kaggle世界上最大的數據科學競賽平臺之一&#xff0c;有大量結構化、圖像、文本等數據集可直接下載?支持一鍵下載、APIPapers with Code可按任務&#xff08;如圖像分類、文本生成等&#xff09;查找模型與數據集&#xff0c;標注 SOTA?與論文強關聯Hugging Face…

Tomcat 生產 40 條軍規:容量規劃、調優、故障演練與安全加固

&#xff08;一&#xff09;容量規劃 6 條 軍規 1&#xff1a;線程池公式 maxThreads ((并發峰值 平均 RT) / 1000) 冗余 20 %&#xff1b; 踩坑&#xff1a;壓測 2000 QPS、RT 200 ms&#xff0c;理論 maxThreads500&#xff0c;線上卻設 150 導致排隊。軍規 2&#xff1a;…

深入解析 Amazon Q:AWS 推出的企業級生成式 AI 助手

在人工智能助手競爭激烈的當下&#xff0c;AWS 重磅推出的 Amazon Q 憑借其強大的企業級整合能力&#xff0c;正成為開發者提升生產力的新利器。隨著生成式 AI 技術席卷全球&#xff0c;各大云廠商紛紛布局智能助手領域。在 2023 年 re:Invent 大會上&#xff0c;AWS 正式推出了…

物流自動化WMS和WCS技術文檔

導語大家好&#xff0c;我是社長&#xff0c;老K。專注分享智能制造和智能倉儲物流等內容。歡迎大家使用我們的倉儲物流技術AI智能體。新書《智能物流系統構成與技術實踐》新書《智能倉儲項目出海-英語手冊&#xff0c;必備&#xff01;》完整版文件和更多學習資料&#xff0c;…

Web3.0 實戰項目、簡歷打造、精準投遞+面試準備

目錄 一、獲取真實企業級 Web3.0 項目的 5 種方式 1. 參與開源項目&#xff08;推薦指數&#xff1a;?????&#xff09; 2. 參與黑客松&#xff08;Hackathon&#xff09; 3. 遠程實習 & DAO 協作項目&#xff08;兼職也可&#xff09; 4. Web3 Startup 實戰項目合…

pymongo庫:簡易方式存取數據

文檔 基礎使用 前提&#xff1a;開發機器已安裝mongo配置環境&#xff0c;已啟動服務。 macOS啟動服務&#xff1a;brew services start mongodb-community8.0 macOS停止服務&#xff1a;brew services stop mongodb-community8.0安裝&#xff1a;python3 -m pip install pym…

Java 線程池與多線程并發編程實戰全解析:從異步任務調度到設計模式落地,200 + 核心技巧、避坑指南與業務場景結合

多線程編程在現代軟件開發中扮演著至關重要的角色&#xff0c;它能夠顯著提升應用程序的性能和響應能力。通過合理利用異步線程、多線程以及線程池等技術&#xff0c;我們可以更高效地處理復雜任務&#xff0c;優化系統資源的使用。同時&#xff0c;在實際應用中&#xff0c;我…

gitee 分支切換

ssh-keygen -t rsa -C "pengchengzhangcplaser.com.cn" ssh -T gitgitee.comgit remote add origin 倉庫地址git config --global user.email "youexample.com"git config --global user.name "Your Name"# 1. 更新遠程信息 git fetch origin# …

Vue3生命周期函數

在 Vue 3 中&#xff0c;生命周期鉤子函數是指組件從創建到銷毀的整個過程中&#xff0c;Vue 自動調用的一些特定函數。它們讓你能夠在組件的不同階段執行一些自定義操作。Vue 3 提供了組合式 API 和選項式 API 兩種方式來定義生命周期鉤子。1. onBeforeMount (組合式 API)作用…

基于SEP3203微處理器的嵌入式最小硬件系統設計

目錄 1 引言 2 嵌入式最小硬件系統 3 SEP3202簡述 4 最小系統硬件的選擇和單元電路的設計 4.1 電源電路 4.2 晶振電路 4.3 復位及喚醒電路 4.5 存儲器 4.5.1 FLASH存儲 4.5.2 SDRAM 4.6 串行接口電路設計 4.7 JTAG模塊 4.8 擴展功能&#xff08;LED&#xff09; …

【開源軟件推薦】 SmartSub,一個可以快速識別視頻/音頻字幕的工具

背景介紹 我就說Github上面能找到好東西吧 事情是這樣的 我最近在用PC端的剪映剪輯視頻 需要用到它的語音轉字幕功能 轉完之后&#xff0c;導出的時候 發現 赫然有一項字幕識別的會員權益 我尋思看看什么價格 不貴的話就充了 好家伙&#xff0c;這不看不知道&#xff…