Выбор средств разработки




 

Для разработки проекта использован язык С# с использованием Windows Presentation Foundation (WPF).

 

В основе WPF лежит векторная система визуализации, не зависящая от разрешения устройства вывода и созданная с учётом возможностей современного графического оборудования. WPF предоставляет средства для создания визуального интерфейса, включая язык XAML (Extensible Application Markup Language), элементы управления, привязку данных, макеты, двухмерную и трёхмерную графику, анимацию, стили, шаблоны, документы, текст, мультимедиа и оформление.

 

Графической технологией, лежащей в основе WPF, является DirectX, в отличие от Windows Forms, где используется GDI/GDI+. Производительность WPF выше, чем у GDI+ за счёт использования аппаратного ускорения графики через DirectX.

 

Также существует урезанная версия CLR, называющаяся WPF/E, она же известна как Silverlight.

 

Для работы с WPF требуется любой.NET-совместимый язык. В этот список входит множество языков: C#, VB, C++, Ruby, Python, Delphi (Prism), Lua и многие другие. Для полноценной работы может быть использована как Visual Studio, так и Expression Blend. Первая ориентирована на программирование, а вторая — на дизайн и позволяет делать многие вещи, не прибегая к ручному редактированию XAML. Примеры этому — анимация, стилизация, состояния, создание элементов управления и так далее.

 

WPF представляет обширный, масштабируемый и гибкий набор графических возможностей:

- Графика, не зависящая от разрешения и устройства. Основной единицей измерения в графической системе WPF является аппаратно-независимый пиксель, который составляет 1/96 часть дюйма независимо от фактического разрешения экрана.

 

- Дополнительная поддержка графики и анимации. WPF упрощает программирование графики за счет автоматического управления анимацией. Разработчик не должен заниматься обработкой сцен анимации, циклами отрисовки и билинейной интерполяцией.

 

- Аппаратное ускорение. Графическая система WPF использует преимущества графического оборудования, чтобы уменьшить использование ЦП.

 

 

Программная реализация

Видео плеер написан в среде разработки Microsoft Visual Studio 2013 с использованием Microsoft.NET Framework 4.5.

Описание алгоритма

 

Весь код программы содержится в одном файле MainWindow.xaml.cs. Вначале пользователю нужно добавить видео или аудиофайлы в программу. Сделать это он может тремя способами: создать плейлист, открыть сохраненный плейлист или воспользоваться кнопкой меню "Открыть файл". Пользователь может перематывать, останавливать воспроизведение, переходить на другой трек. В программе пользователю предоставляется возможность сохранить сформированный им плейлист и редактировать существующий.

 

В данном разделе приведем несколько типов диаграмм, построенных для нашего проекта:

- диаграмма классов, построенная в среде Visual Studio. На диаграмме изображены классы MainWindow и PlayList, в которых показаны все поля и методы.

 

- диаграммы состояний определяют все возможные состояния, в которых может находиться конкретный объект, а также процесс смены состояний объекта в результате влияния некоторых событий.

 

 

Описание интерфейса

 

Интерфейсы являются основой взаимодействия всех современных информационных систем. Если интерфейс какого-либо объекта (персонального компьютера, программы, функции) не изменяется (стабилен, стандартизирован), это даёт возможность модифицировать сам объект, не перестраивая принципы его взаимодействия с другими объектами.

Например, научившись работать с одной программой под Windows, пользователь с легкостью освоит и другие - потому, что они имеют одинаковый интерфейс.

Интерфейс должен быть в первую очередь наглядным, простым и удобным для пользователя.

Рассмотрим интерфейс нашей программы. При его запуске мы увидим главное окно, в котором находится все возможности программы.

 

 

Кнопка открывает файл.

Кнопка создает плейлист.

Кнопка открывает плейлист.

Кнопки / ставят воспроизведение на паузу или снимают с нее.

Кнопки / осуществляют переключение песен.

Кнопка останавливает воспроизведение.

 

По нажатию на кнопку "Открыть плейлист" появляются 3 дополнительные кнопки для его редактирования: добавить песню, удалить песню и обновить плейлист.

 

 

По нажатию на кнопку "Добавить файл" появляется диалоговое окно, в котором можно выбрать несколько файлов разного формата.

 

 

По нажатию на кнопку "Удалить файл" удаляется файл из ListBox.

 

 

По нажатию на кнопку "Обновить плейлист" обновляется плейлист форма XML, исходя из содержимого ListBox.

 

По нажатию на кнопку "Создать плейлист" будут поочередно открываться диалоговые окна, в которых необходимо выбрать директорию для сохранения плейлиста, файлы и ввести имя плейлста.

 

 

 

 

По нажатию на кнопку "Открыть файл" появляется диалоговое окно для открытия файла.

 

 

 

 

Заключение

 

В результате выполнения курсовой работы был создан видео плеер с поддержкой форматов.avi,.mp4,.mp3.

 

 

 

Список литературы

 

1. Павловская Т. А. Программирование на языке высокого уровня: Учебник для вузов. - СПб.: Питер, 2013. - 432 с.: ил.

 

2. Троелсен Эндрю Язык программирования C# 5.0 и платформа.NET 4.5, 6-е изд.: Пер. с англ. - М.: ООО "И. Д. Вильямс", 2013. - 1312 с.: ил.

 

3. https://msdn.microsoft.com/ru-ru/

 

 

Приложения

 

Листинг кода методов OpenFile, CreatePlaylist и OpenPlaylist:

 

private void Button_OpenFile(object sender, RoutedEventArgs e)

{

OpenFileDialog open = new OpenFileDialog();

open.Filter = "Media files (*.mp3;*.avi;*.mp4)|*.mp3;*.avi;*.mp4|All files (*.*)|*.*";

if (open.ShowDialog() == true)

{

dispatcherTimer.Stop();

TimeSlider.Value = count = length = hours = min = sec = 0;

Media.Source = new Uri(open.FileName);

Name.Content = open.SafeFileName;

TimeSpan ts2 = new TimeSpan(0, 0, 0, 0, 0);

Media.Position = ts2;

starttrack();

Media.Play();

File[0] = open.FileName;

File[1] = open.SafeFileName;

dispatcherTimer.Start();

pause = stop = true;

pll = false;

}

}

 

private void Button_CreatePlaylist(object sender, RoutedEventArgs e)

{

var dlg = new CommonOpenFileDialog();

string folder = "";

dlg.Title = "Выберите папку для сохранения PlayList";

dlg.IsFolderPicker = true;

//dlg.InitialDirectory = currentDirectory;

dlg.AddToMostRecentlyUsedList = false;

dlg.AllowNonFileSystemItems = false;

//dlg.DefaultDirectory = currentDirectory;

dlg.EnsureFileExists = true;

dlg.EnsurePathExists = true;

dlg.EnsureReadOnly = false;

dlg.EnsureValidNames = true;

dlg.Multiselect = false;

dlg.ShowPlacesList = true;

if (dlg.ShowDialog() == CommonFileDialogResult.OK)

{

folder = dlg.FileName;

OpenFileDialog open = new OpenFileDialog();

open.Title = "Выберите файлы";

open.Multiselect = true;

 

open.Filter = "Media files (*.mp3;*.avi;*.mp4)|*.mp3;*.avi;*.mp4|All files (*.*)|*.*";

if (open.ShowDialog() == true)

{

byte i = 0;

foreach (string filename in open.SafeFileNames)

kolpl++;

PlayList pl = new PlayList();

pl.tracks = new String[kolpl];

pl.names = new String[kolpl];

pl.folder = folder;

pl.kol = kolpl;

foreach (string filename in open.FileNames)

{

pl.tracks[i] = filename;

i++;

}

i = 0;

foreach (string filename in open.SafeFileNames)

{

pl.names[i] = filename;

i++;

}

SaveFileDialog save = new SaveFileDialog();

save.Filter = "XML file (*.xml)|*.xml";

save.Title = "Введите имя PlayList";

if (save.ShowDialog() == true)

{

pl.title = save.SafeFileName;

var writer = new System.Xml.Serialization.XmlSerializer(typeof(PlayList));

var wfile = System.IO.File.Create(folder + "\\" + save.SafeFileName);

writer.Serialize(wfile, pl);

wfile.Close();

}

}

}

}

 

private void Button_OpenPlaylist(object sender, RoutedEventArgs e)

{

OpenFileDialog open = new OpenFileDialog();

open.Filter = "XML file (*.xml)|*.xml";

if (open.ShowDialog() == true)

{

dispatcherTimer.Stop();

TimeSlider.Value = count = length = hours = min = sec = 0;

var reader = new System.Xml.Serialization.XmlSerializer(typeof(PlayList));

var file = new System.IO.StreamReader(open.FileName);

plist = (PlayList)reader.Deserialize(file);

 

file.Close();

Media.Source = new Uri(plist.tracks[0]);

currenttr = 0;

Name.Content = plist.names[0];

TimeSpan ts2 = new TimeSpan(0, 0, 0, 0, 0);

Media.Position = ts2;

//starttrack();

Media.Play();

dispatcherTimer.Start();

pll = pause = stop = true;

Playlist.Items.Clear();

foreach (string filename in plist.names)

Playlist.Items.Add(filename);

Playlist.Visibility = Visibility.Visible;

AddTrack.Visibility = Visibility.Visible;

DeleteTrack.Visibility = Visibility.Visible;

Refresh.Visibility = Visibility.Visible;

openplm();

}

}

 

 

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2016-08-07 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: