Консультация № 176700
15.02.2010, 09:16
0.00 руб.
0 2 2
Доброго времени суток! Друзья,как организовать показ видео-роликов в проекте через форму программы написанной в Visual Studio .NET ?

Обсуждение

Неизвестный
15.02.2010, 10:03
общий
это ответ
Здравствуйте, Roma2010.
Можно это сделать с использованием WPF. Обязательно на комп. должна быть установлена фрэймвокер 3,5 с сп1.
Создаем проект WindowsFormsApplication. ДОбавляем форму на ней кнопку.
Создаем проект WPF . В нем окно Window. На это окно добавляем элемент "mediaElement" .
В проект WindowsFormsApplication через добавление существуещего элемента добавляем окно Window из проекта WPF.
Настраиваем "mediaElement" , устанавливаем свойство Source . Место где находится проигравыемый клип.
Событие кнопки
private void button1_Click(object sender, EventArgs e)
{
Window1 w = new Window1();
w.Show();
}
Запускаем проект на исполнение.
смотри прикркпленый проект.
Прикрепленные файлы:
5
Спасибо за внимание!И полезную информацию :)
Неизвестный
16.02.2010, 01:46
общий
это ответ
Здравствуйте, Roma2010.

Похоже, MS планирует всех пересадить на WPF, так что до сих пор проигрывание видео напрямую доступно только в ней. Можно по-прежнему работать в WinForms и просто портировать нужный компонент из WPF:
1 Добавьте на форму таймер и ElementHost (в самом низу, во вкладке WPF Interoperability). Все необходимые зависимости подключатся к проекту.
2 Установите ему Dock=Fill, чтобы он на весь размер формы растягивался.
3 Создайте стандартные события формы и таймера. (Load, Tick)
4 Скопируйте следующий код в форму. Только замените путь к видео.

Самый важный код находится в Form1_Load.
Кнопка мышки - пауза, колесико - прыжок на 10 секунд. У таймера желательно увеличить интервал. Иначе тормозить будет на слабых машинах.

Приложение:
private void Form1_Load(object sender, EventArgs e)
{
MediaElement ME = new MediaElement();
ME.LoadedBehavior = MediaState.Manual;
ME.Source = new Uri(@"D:\Torrents\ChGK_2009_Zima\Chto.gde.kogda_zimnjaja.serija_igra_1.2009.SATRip.avi");

ME.MouseUp += new MouseButtonEventHandler(ME_MouseUp);
ME.MouseWheel += new MouseWheelEventHandler(ME_MouseWheel);

ME.RenderTransform = new System.Windows.Media.SkewTransform(-10, 0);//Балуемся
elementHost1.Child = ME;
ME.Play();
timer1.Start();
}

void ME_MouseWheel(object sender, MouseWheelEventArgs e)
{
MediaElement ME = elementHost1.Child as MediaElement;
ME.Position += TimeSpan.FromSeconds(10 * Math.Sign(e.Delta));
}

bool Paused = false;
void ME_MouseUp(object sender, MouseButtonEventArgs e)
{
MediaElement ME = elementHost1.Child as MediaElement;
if (Paused)
{
Paused = false;
ME.Play();
}
else
{
Paused = true;
ME.Pause();
}
}

private void timer1_Tick(object sender, EventArgs e)
{
MediaElement ME = elementHost1.Child as MediaElement;
if (ME.NaturalDuration.HasTimeSpan)
{
TimeSpan TP = ME.Position, TT = ME.NaturalDuration.TimeSpan;
TP = TimeSpan.FromSeconds(Math.Floor(TP.TotalSeconds));
TT = TimeSpan.FromSeconds(Math.Floor(TT.TotalSeconds));
Text = String.Format("{0:T} / {1:T}", TP, TT);
}
}
Форма ответа