Маркеры MediaElement, отсутствующие в WPF - PullRequest
1 голос
/ 09 марта 2010

Я вижу, что в MediaElement есть свойство Markers, но оно, по-видимому, доступно для MediaElement Silverlight, а не для MediaElement WPF?

Можете ли вы помочь мне с тем, что мне не хватает?

Я пытаюсь добавить маркеры в WPF MediaElement, чтобы воспроизвести видео и показать всплывающие окна на временной шкале. Что я должен использовать вместо коллекции недостающих маркеров?

Спасибо за вашу помощь.

1 Ответ

4 голосов
/ 17 сентября 2010

В вашем вопросе есть два аспекта, в зависимости от того, что вы на самом деле намеревались. Обратите внимание, что свойство MediaElement.Markers является только для чтения коллекцией маркеров шкалы времени, связанных с текущий загруженный медиа-файл :

Что такое маркер шкалы времени?

Вот описание MSDN TimelineMarker Class :

Маркер временной шкалы - это метаданные, связанные с определенной точкой в ​​медиафайле. Эти маркеры обычно создаются заранее и хранятся в самом медиафайле. Обычно они используются для именования различных сцен в видео или для предоставления сценариев. Обрабатывая событие MarkerReached объекта MediaElement или обращаясь к свойству Markers объекта MediaElement, можно использовать маркеры временной шкалы [...]

Таким образом, маркеры шкалы времени могут хорошо подходить для кодирования ваших всплывающих окон, но важно отметить, что они являются свойством самого файла мультимедиа, а не коллекцией графических отметок на виджете шкалы времени типичного медиаплеера!

Как создавать и обрабатывать маркеры шкалы времени?

Единственная статья, обобщающая это, которую я смог найти прямо сейчас, - это Как кодировать видеомаркеры для потребления в Silverlight и WPF от Стивена Портера. (Не дайте себя одурачить требованием регистрации, это печально известная техника с сайта злой дефис , которая в первую очередь мотивировала создание переполнения стека, т.е. вы можете прочитать статью просто отлично, не регистрируясь, просто продолжайте прокручивать вниз.)

Как создать элемент управления временной шкалой с отметками в WPF?

Предполагая, что это именно то, чего вы на самом деле пытаетесь достичь, и почему вы наткнулись на коллекцию MediaElement.Markers , ответом будет свернуть ваше собственное :

Это довольно просто, хотя вам нужно настроить Slider по своему вкусу, см. Этот пример из Slider Class документации по , как использовать Ticks свойство для создания меток вдоль ползунка с нерегулярными интервалами :

<Slider Width="100" Value="50" Orientation="Horizontal" HorizontalAlignment="Left" 
IsSnapToTickEnabled="True" Maximum="3" TickPlacement="BottomRight" 
AutoToolTipPlacement="BottomRight" AutoToolTipPrecision="2" 
Ticks="0, 1.1, 2.5, 3"/>
...