Здравствуйте! В этой статье мы рассмотрим, как создать простое приложение для воспроизведения музыки с использованием класса SoundPlayer в C# Windows Forms. SoundPlayer — это часть пространства имен System.Media, которая позволяет воспроизводить звуковые файлы в формате WAV. Хотя SoundPlayer поддерживает только WAV-файлы, это отличный способ начать работу с аудио в .NET.
Шаги для создания музыкального плеера
- Создание нового проекта Windows Forms:
- Откройте Visual Studio.
- Создайте новый проект и выберите «Windows Forms App (.NET Framework)».
-
Назовите проект, например, SimpleMusicPlayer.
-
Добавление элементов управления:
-
Добавьте на форму следующие элементы управления:
- Button для запуска воспроизведения музыки.
- Button для остановки воспроизведения музыки.
- OpenFileDialog для выбора WAV-файла.
-
Использование SoundPlayer для воспроизведения музыки:
- Создайте экземпляр SoundPlayer и используйте его для управления воспроизведением.
Пример кода
using System;
using System.Media;
using System.Windows.Forms;
namespace SimpleMusicPlayer
{
public partial class Form1 : Form
{
private SoundPlayer player;
public Form1()
{
InitializeComponent();
}
private void btnOpenFile_Click(object sender, EventArgs e)
{
using (OpenFileDialog openFileDialog = new OpenFileDialog())
{
openFileDialog.Filter = "WAV Files|*.wav";
if (openFileDialog.ShowDialog() == DialogResult.OK)
{
player = new SoundPlayer(openFileDialog.FileName);
}
}
}
private void btnPlay_Click(object sender, EventArgs e)
{
if (player != null)
{
player.Play();
}
}
private void btnStop_Click(object sender, EventArgs e)
{
if (player != null)
{
player.Stop();
}
}
}
}
Объяснение кода
-
Инициализация SoundPlayer: Экземпляр SoundPlayer создается при выборе файла через
OpenFileDialog
. Это позволяет пользователю выбрать WAV-файл для воспроизведения. -
Воспроизведение музыки: Метод Play класса SoundPlayer используется для воспроизведения звука. Этот метод вызывается при нажатии кнопки «Play».
-
Остановка воспроизведения: Метод Stop используется для остановки воспроизведения. Этот метод вызывается при нажатии кнопки «Stop».
-
OpenFileDialog: Используется для открытия диалогового окна выбора файла, которое позволяет пользователю выбрать WAV-файл для воспроизведения.
Заключение
Этот простой музыкальный плеер демонстрирует базовые возможности класса SoundPlayer
в C#. Хотя SoundPlayer поддерживает только WAV-файлы, он предоставляет удобный способ начать работу с аудио в приложениях на платформе .NET. Вы можете расширить это приложение, добавив управление громкостью, плейлисты или поддержку других аудиоформатов с использованием дополнительных библиотек.
Для большего понимания, рекомендую видеокурс Программирование на C# с Нуля до Гуру, в котором подробнее рассказано об особенностях языка C#
-
Создано 26.03.2025 13:28:57
-
Михаил Русаков
Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!
Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.
Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления
Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.
Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):
-
Кнопка:
Она выглядит вот так:
-
Текстовая ссылка:
Она выглядит вот так: Как создать свой сайт
- BB-код ссылки для форумов (например, можете поставить её в подписи):
|
greem68 0 / 0 / 0 Регистрация: 08.07.2012 Сообщений: 72 |
||||
Как сделать фоновую музыку?13.07.2012, 19:37. Показов 42030. Ответов 25 Метки нет (Все метки) Люди, помогите пожалуйста. Весь интернет перерыл и нашел только один код, который относительно работает, но через несколько секунд программа вылетает. Может посоветуете какой более лаконичный способ добавления музыки? Желательно формата ogg или mp3. Вот код, которым я пользуюсь:
0 |
cpp_developer Эксперт 20123 / 5690 / 1417 Регистрация: 09.04.2010 Сообщений: 22,546 Блог |
13.07.2012, 19:37 |
25 |
TamaHawk 12 / 12 / 1 Регистрация: 21.04.2012 Сообщений: 33 |
||||
13.07.2012, 19:49 |
||||
Вот способ как проигрывать mp3 в программе, но нужно добавлять ссылку на библиотеку WindowsMediaPlayer через COM. Проект >> Добавить ссылку, находишь в разделе COM, WindowsMediaPlayer (wmp.dll) и добавляешь его к проекту.
0 |
+B Заблокирован |
||||
13.07.2012, 20:25 |
||||
Вот есть еще такая апишная функция.
0 |
0 / 0 / 0 Регистрация: 08.07.2012 Сообщений: 72 |
|
13.07.2012, 20:54 [ТС] |
|
+B, Не совсем понял как работает твой код. Не можешь объяснить, что это? Добавлено через 1 минуту Добавлено через 1 минуту
0 |
Заблокирован |
|
13.07.2012, 21:19 |
|
Сообщение от greem68 +B, Не совсем понял как работает твой код. Не можешь объяснить, что это? Это не мой код, а функция с помощью которой можно воспроизводить медио файлы.
0 |
0 / 0 / 0 Регистрация: 08.07.2012 Сообщений: 72 |
|
13.07.2012, 23:14 [ТС] |
|
+B, А как использовать то его?
0 |
TamaHawk 12 / 12 / 1 Регистрация: 21.04.2012 Сообщений: 33 |
||||
13.07.2012, 23:35 |
||||
greem68, Кстати в этой строчке я забыл точку с запятой в конце поставить, добавь если у тебя не стоит. WMP.URL = @»sound.mp3″; Добавлено через 14 минут
0 |
0 / 0 / 0 Регистрация: 08.07.2012 Сообщений: 72 |
|
14.07.2012, 10:41 [ТС] |
|
TamaHawk, А это только при щелчке мыши?
0 |
TamaHawk 12 / 12 / 1 Регистрация: 21.04.2012 Сообщений: 33 |
||||
14.07.2012, 10:54 |
||||
greem68, Все зависит от того в какой обработчик события закинешь. Можно сделать чтоб начинал игать как только загрузишь прогу. Для этого создай обработчик события загрузки формы, два раза кликни на форму, и создастся обработчик события примерно такого вида
0 |
TamaHawk 12 / 12 / 1 Регистрация: 21.04.2012 Сообщений: 33 |
||||
14.07.2012, 11:34 |
||||
greem68, Просто закоментируй эти две строчки, дело в этом. Они останавливают музыку при желании.
0 |
0 / 0 / 0 Регистрация: 08.07.2012 Сообщений: 72 |
|
14.07.2012, 11:45 [ТС] |
|
Да, он там же и exe, ссылку на wmp куда поставить? Добавлено через 8 минут
0 |
Заблокирован |
|
14.07.2012, 11:50 |
|
Сообщение от greem68 А как это? Извините, я не оч с этим. Мне кажется, что тебе следует прочитать немного про синтаксис СиШарп и в частности про то, как пишутся комментарии.
0 |
TamaHawk 12 / 12 / 1 Регистрация: 21.04.2012 Сообщений: 33 |
||||
14.07.2012, 11:50 |
||||
greem68, Вроде на второй фотографии все правильно было, надо только убрать строчку
1 |
0 / 0 / 0 Регистрация: 08.07.2012 Сообщений: 72 |
|
14.07.2012, 11:58 [ТС] |
|
Алелуя! Спасибо! Добавлено через 1 минуту
0 |
12 / 12 / 1 Регистрация: 21.04.2012 Сообщений: 33 |
|
14.07.2012, 12:11 |
|
greem68, Я сам еще новичок, на стадии обучения, так что наврятли смогу помочь с вопросом по srollbar, но и вопрос не совсем понятен там.
0 |
0 / 0 / 0 Регистрация: 08.07.2012 Сообщений: 72 |
|
14.07.2012, 12:24 [ТС] |
|
Мне просто надо было использовать элемент vScrollBar и привязать его к элементу WebBrowser. Что бы например полоса прокрутки была там, где я её поставлю, и крутить ей страницы в WebBrowser.
0 |
chempion59 |
||||
14.02.2013, 20:24 |
||||
Здрасте, а как сделать чтобы играл целый список песен? и возможно ли избежать многократного добавления таких примеров?
|
Aloir 225 / 225 / 38 Регистрация: 17.12.2010 Сообщений: 713 |
||||
15.02.2013, 13:12 |
||||
убери у себя метод close, у тебя музыка начинает играть, а потом сразу закрывается проигрыватель
0 |
89 / 77 / 38 Регистрация: 11.10.2015 Сообщений: 860 |
|
02.11.2016, 16:19 |
|
Всем привет! Подскажите как В 15 VS как добавить ссылку на wmp.dll?
0 |
Новые блоги и статьи
Все статьи Все блоги / |
||||
Как использовать OAuth2 со Spring Security в Java
Javaican 14.05.2025 Протокол OAuth2 часто путают с механизмами аутентификации, хотя по сути это протокол авторизации. Представьте, что вместо передачи ключей от всего дома вашему другу, который пришёл полить цветы, вы. . . |
Анализ текста на Python с NLTK и Spacy
AI_Generated 14.05.2025 NLTK, старожил в мире обработки естественного языка на Python, содержит богатейшую коллекцию алгоритмов и готовых моделей. Эта библиотека отлично подходит для образовательных целей и. . . |
Реализация DI в PHP
Jason-Webb 13.05.2025 Когда я начинал писать свой первый крупный PHP-проект, моя архитектура напоминала запутаный клубок спагетти. Классы создавали другие классы внутри себя, зависимости жостко прописывались в коде, а о. . . |
Обработка изображений в реальном времени на C# с OpenCV
stackOverflow 13.05.2025 Объединение библиотеки компьютерного зрения OpenCV с современным языком программирования C# создаёт симбиоз, который открывает доступ к впечатляющему набору возможностей. Ключевое преимущество этого. . . |
POCO, ACE, Loki и другие продвинутые C++ библиотеки
NullReferenced 13.05.2025 В C++ разработки существует такое обилие библиотек, что порой кажется, будто ты заблудился в дремучем лесу. И среди этого многообразия POCO (Portable Components) – как маяк для тех, кто ищет. . . |
Паттерны проектирования GoF на C#
UnmanagedCoder 13.05.2025 Вы наверняка сталкивались с ситуациями, когда код разрастается до неприличных размеров, а его поддержка становится настоящим испытанием. Именно в такие моменты на помощь приходят паттерны Gang of. . . |
Создаем CLI приложение на Python с Prompt Toolkit
py-thonny 13.05.2025 Современные командные интерфейсы давно перестали быть черно-белыми текстовыми программами, которые многие помнят по старым операционным системам. CLI сегодня – это мощные, интуитивные и даже. . . |
Конвейеры ETL с Apache Airflow и Python
AI_Generated 13.05.2025 ETL-конвейеры – это набор процессов, отвечающих за извлечение данных из различных источников (Extract), их преобразование в нужный формат (Transform) и загрузку в целевое хранилище (Load). . . . |
Выполнение асинхронных задач в Python с asyncio
py-thonny 12.05.2025 Современный мир программирования похож на оживлённый мегаполис – тысячи процессов одновременно требуют внимания, ресурсов и времени. В этих джунглях операций возникают ситуации, когда программа. . . |
Работа с gRPC сервисами на C#
UnmanagedCoder 12.05.2025 gRPC (Google Remote Procedure Call) — открытый высокопроизводительный RPC-фреймворк, изначально разработанный компанией Google. Он отличается от традиционых REST-сервисов как минимум тем, что. . . |
Наверх
-
Use C# Windows Form Application to Create a Simple Mp3 Player
-
Use
DirectShow
Functionality to Create an Mp3 Windows Form Application inC#
This post will demonstrate how to build a simple C# mp3 player using your C# Windows form application and a Windows Media Player.
Use C# Windows Form Application to Create a Simple Mp3 Player
First, we’ll create a new Windows form by following these steps.
-
Open Microsoft Visual Studio 2017 or updated version.
-
At the top-left corner, find
File
and open a new project. -
Then choose
Windows Forms Application
, name it, and clickOK
. -
After you click
OK
, a new empty window form will appear.
Now, we’ll design the form.
After creating the Windows form, we’ll design it. If you don’t have the Windows Media Player items in your Toolbox
, follow these steps.
-
Right-click on
Components
and clickChoose Items
in the toolbox area, a new window will appear. -
Select the
COM Components
tab, and click on theWindows Media Player
item from the list.
Adding Items:
-
Drag and drop the
Windows Media Player
onto the form, then adjust its position. -
Add a
ListBox
and name itAudiolist
to choose the mp3 file list. -
Now add a button from the toolbox and name it
ChooseButton
. We’re using a button to choose a playlist, and the listbox will display a playlist of audio files that will play inWindows Media Player
when you select one from the listbox.
We can create an MP3 Player Windows form by following these particular steps.
Libraries that are required:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
Firstly, initialize two string array-type global variables named file
and filepath
.
Now create an OpenFileDialog
type variable named fileOpen
, which will be used to launch a dialogue box for selecting files from the storage.
OpenFileDialog fileOpen = new OpenFileDialog();
Then we’ll apply a condition and pass the following as parameters.
if (fileOpen.ShowDialog() == System.Windows.Forms.DialogResult.OK)
The file’s name will be saved in the file
variable if this expression is true.
file = fileOpen.SafeFileNames;
Using the below command, store the whole path of the file in the path variable named filepath
.
filepath = fileOpen.FileNames;
Then we’ll use a for
loop to add audio files in ListBox
.
for (int i = 0; i < file.Length; i++) {
Audiolist.Items.Add(file[i]);
}
After that, generate a click event of ListBox
by double-clicking on it.
private void Audiolist_SelectedIndexChanged(object sender, EventArgs e) {}
This code is then pasted into the Audiolist
body. This code will transfer the list or the path to that file into your Windows Media Player, regardless of the name you give it in the ListBox
.
private void Audiolist_SelectedIndexChanged(object sender, EventArgs e) {
axWindowsMediaPlayer1.URL = filepath[Audiolist.SelectedIndex];
}
The source code for building a simple C# mp3 player using your C# Windows form application, and a Windows Media Player is below.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Mp3Player {
public partial class Form1 : Form {
string[] file, filepath;
public Form1() {
InitializeComponent();
}
private void ChooseButton_Click(object sender, EventArgs e) {
OpenFileDialog fileOpen = new OpenFileDialog();
if (fileOpen.ShowDialog() == System.Windows.Forms.DialogResult.OK) {
file = fileOpen.SafeFileNames;
filepath = fileOpen.FileNames;
for (int i = 0; i < file.Length; i++) {
Audiolist.Items.Add(file[i]);
}
}
}
private void Audiolist_SelectedIndexChanged(object sender, EventArgs e) {
axWindowsMediaPlayer1.URL = filepath[Audiolist.SelectedIndex];
}
}
}
Use DirectShow
Functionality to Create an Mp3 Windows Form Application in C#
Use DirectShow
functionality to create an Mp3 Windows form application with a Windows Media Player.
Tlbimp
transforms type definitions in a COM type library to comparable definitions in an executable assembly for a common language.
The output of Tlbimp.exe
is a binary file (an assembly) with runtime metadata for the types declared in the original type library.
To create QuartzTypeLib.dll
, follow these steps.
-
Run the
tlbimp
tool first. -
Run
TlbImp.exe %windir%\system32\quartz.dll
(This location or directory may differ from device to device.) -
The output would be
QuartzTypeLib.dll
. -
Right-click the mouse button on the project name in
Solution Explorer
, then select theAdd
menu item and thenReference
. It will addQuartzTypeLib.dll
to your project as a COM-reference. -
Expand
References
in your Project and look for theQuartzTypeLib
reference. ChangeEmbed Interop Types
to false by right-clicking it and selecting properties. -
Disable the
Prefer 32-bit
setting in Project Settings. Build tab if you don’t want to get the Exceptions.
You can use this source code to create an Mp3 Windows form application.
using QuartzTypeLib;
public sealed class DirectShowPlayer {
private FilgraphManager fgm;
public void Play(string filepath) {
FilgraphManager fgm = new FilgraphManager();
fgm.RenderFile(filepath);
fgm.Run();
}
public void Stop() {
fgm?.Stop();
}
}
Enjoying our tutorials? Subscribe to DelftStack on YouTube to support us in creating more high-quality video guides. Subscribe
Введение
Разработка игр на Windows Forms с помощью C# — это увлекательное и сложное занятие. Одним из ключевых аспектов игрового процесса является звуковое сопровождение, которое может создать атмосферу и добавить динамики игре. В этом руководстве мы рассмотрим, как добавить фоновую музыку в игру на Windows Forms C#.
Установка необходимых компонентов
Чтобы добавить фоновую музыку в игру, нам понадобится несколько компонентов:
- Windows Forms: Это основная библиотека для разработки графического интерфейса в Windows.
- C#: Это язык программирования, который мы будем использовать для написания кода.
- NAudio: Это библиотека для работы с аудио в .NET. Мы будем использовать ее для воспроизведения фоновой музыки.
Чтобы установить NAudio, нам нужно добавить пакет NuGet в наш проект. Для этого следуйте следующим шагам:
- Откройте проект в Visual Studio.
- Нажмите на кнопку «Управление пакетами NuGet» в меню «Пакеты NuGet».
- В поисковом поле введите «NAudio» и нажмите Enter.
- Нажмите на кнопку «Установить» рядом с пакетом NAudio.
Создание фоновой музыки
Теперь, когда мы установили необходимые компоненты, мы можем создать фоновую музыку. Для этого нам нужно создать класс, который будет отвечать за воспроизведение музыки.
using NAudio.Wave; using System;
public class BackgroundMusic { private readonly IWavePlayer _wavePlayer; private readonly WaveStream _waveStream;
public BackgroundMusic(string filePath) { _wavePlayer = new WaveOut(); _waveStream = new WaveFileReader(filePath); } public void Play() { _wavePlayer.Init(_waveStream); _wavePlayer.Play(); } public void Stop() { _wavePlayer.Stop(); }
}
В этом классе мы создали конструктор, который принимает путь к файлу музыки. Мы также создали методы
Play
иStop
, которые отвечают за воспроизведение и остановку музыки соответственно.Добавление фоновой музыки в игру
Теперь, когда мы создали класс фоновой музыки, мы можем добавить его в нашу игру. Для этого нам нужно создать экземпляр класса и вызвать метод
Play
в методеForm_Load
.private BackgroundMusic _backgroundMusic;
protected override void OnLoad(EventArgs e) { base.OnLoad(e); _backgroundMusic = new BackgroundMusic("background_music.mp3"); _backgroundMusic.Play(); }
protected override void OnUnload(EventArgs e) { base.OnUnload(e); _backgroundMusic.Stop(); }
В этом коде мы создали экземпляр класса фоновой музыки и вызвали метод
Play
в методеForm_Load
. Мы также создали методOnUnload
, который останавливает музыку при закрытии формы.Работа с другими звуками
В игре уже есть другие звуки, которые связаны с конкретными действиями пользователя. При запуске игры фоновая музыка играет, но как только включаются другие звуки, фоновая музыка сразу же прерывается. Чтобы решить эту проблему, нам нужно использовать потоковую аудио.
Потоковая аудио позволяет воспроизводить несколько звуков одновременно, не прерывая друг друга. Для этого нам нужно использовать класс
WaveOut
и создать несколько потоков аудио.private readonly WaveOut _waveOut;
public Form1() { InitializeComponent(); _waveOut = new WaveOut(); }
private void Button1_Click(object sender, EventArgs e) { _waveOut.Init(new WaveFileReader("sound1.wav")); _waveOut.Play(); }
private void Button2_Click(object sender, EventArgs e) { _waveOut.Init(new WaveFileReader("sound2.wav")); _waveOut.Play(); }
В этом коде мы создали экземпляр класса
WaveOut
и вызвали методInit
для каждого звука. Мы также вызвали методPlay
для каждого звука.Заключение
Добавление фоновой музыки в игру на Windows Forms C# — это увлекательное и сложное занятие. В этом руководстве мы рассмотрели, как добавить фоновую музыку в игру, используя библиотеку NAudio. Мы также рассмотрели, как работать с другими звуками, используя потоковую аудио. Надеемся, что это руководство поможет вам создать увлекательную и динамичную игру.
Вопрос 1: Как установить NAudio в моем проекте?
Ответ: Чтобы установить NAudio в вашем проекте, нужно добавить пакет NuGet в ваш проект. Для этого следуйте следующим шагам:
- Откройте проект в Visual Studio.
- Нажмите на кнопку «Управление пакетами NuGet» в меню «Пакеты NuGet».
- В поисковом поле введите «NAudio» и нажмите Enter.
- Нажмите на кнопку «Установить» рядом с пакетом NAudio.
Вопрос 2: Как создать фоновую музыку в моей игре?
Ответ: Чтобы создать фоновую музыку в вашей игре, нужно создать класс, который будет отвечать за воспроизведение музыки. Для этого можно использовать следующий код:
using NAudio.Wave; using System;
public class BackgroundMusic { private readonly IWavePlayer _wavePlayer; private readonly WaveStream _waveStream;
public BackgroundMusic(string filePath) { _wavePlayer = new WaveOut(); _waveStream = new WaveFileReader(filePath); } public void Play() { _wavePlayer.Init(_waveStream); _wavePlayer.Play(); } public void Stop() { _wavePlayer.Stop(); }
}
Вопрос 3: Как добавить фоновую музыку в мой проект?
Ответ: Чтобы добавить фоновую музыку в ваш проект, нужно создать экземпляр класса фоновой музыки и вызвать метод
Play
в методеForm_Load
. Для этого можно использовать следующий код:private BackgroundMusic _backgroundMusic;
protected override void OnLoad(EventArgs e) { base.OnLoad(e); _backgroundMusic = new BackgroundMusic("background_music.mp3"); _backgroundMusic.Play(); }
protected override void OnUnload(EventArgs e) { base.OnUnload(e); _backgroundMusic.Stop(); }
Вопрос 4: Как работать с другими звуками в моей игре?
Ответ: Чтобы работать с другими звуками в вашей игре, нужно использовать потоковую аудио. Для этого можно использовать класс
WaveOut
и создать несколько потоков аудио. Для этого можно использовать следующий код:private readonly WaveOut _waveOut;
public Form1() { InitializeComponent(); _waveOut = new WaveOut(); }
private void Button1_Click(object sender, EventArgs e) { _waveOut.Init(new WaveFileReader("sound1.wav")); _waveOut.Play(); }
private void Button2_Click(object sender, EventArgs e) { _waveOut.Init(new WaveFileReader("sound2.wav")); _waveOut.Play(); }
Вопрос 5: Как остановить фоновую музыку в моей игре?
Ответ: Чтобы остановить фоновую музыку в ваш игре, нужно вызвать метод
Stop
в методеOnUnload
. Для этого можно использовать следующий код:protected override void OnUnload(EventArgs e) { base.OnUnload(e); _backgroundMusic.Stop(); }
Вопрос 6: Как решить проблему, когда фоновая музыка прерывается, когда включаются другие звуки?
Ответ: Чтобы решить эту проблему, нужно использовать потоковую аудио. Для этого можно использовать класс
WaveOut
и создать несколько потоков аудио. Для этого можно использовать следующий код:private readonly WaveOut _waveOut;
public Form1() { InitializeComponent(); _waveOut = new WaveOut(); }
private void Button1_Click(object sender, EventArgs e) { _waveOut.Init(new WaveFileReader("sound1.wav")); _waveOut.Play(); }
private void Button2_Click(object sender, EventArgs e) { _waveOut.Init(new WaveFileReader("sound2.wav")); _waveOut.Play(); }
Вопрос 7: Как добавить фоновую музыку в мой проект, если у меня нет опыта в разработке игр?
Ответ: Чтобы добавить фоновую музыку в ваш проект, если у вас нет опыта в разработке игр, нужно начать с изучения основ разработки игр на Windows Forms с помощью C#. Затем можно изучить библиотеку NAudio и создать класс фоновой музыки. Наконец, можно добавить фоновую музыку в свой проект, используя класс фоновой музыки.