Каков наилучший способ отображения видео со скругленными углами в Silverlight?
-
09-06-2019 - |
Вопрос
MediaElement не поддерживает закругленные углы (radius x, radiusy).Должен ли я использовать VideoBrush на прямоугольнике со скругленными углами?
Решение
Да, в каком-то смысле вы сами задаете этот вопрос и сами на него отвечаете...Но это один из двух вариантов, которые я могу придумать.Причины, которые могут быть проблемой, заключаются в том, что вы теряете некоторые функции / элементы управления, которые получаете от элемента управления MediaElement.Другой вариант - сделать это:
- Добавьте свой MediaElement на свою страницу.
- Нарисуйте поверх него прямоугольник и задайте желаемый радиус угла
- Щелкните правой кнопкой мыши прямоугольник в области наложения и выберите "Создать контур обрезки".
- Примените обтравочный контур к вашему MediaElement
Таким образом, вы по-прежнему используете элемент управления MediaElement, но вы можете "обрезать" все, что хотите, чтобы получить желаемый эффект округления.
В этом примере показан обрезанный элемент MediaElement.Я знаю, что изобразить векторную траекторию непросто, но если вы откроете ее в режиме Blend, вы увидите округлый MediaElement.
<MediaElement
Height="132" Width="176" Source="Egypt2007.wmv"
Clip="M0.5,24.5 C0.5,11.245166 11.245166,0.5 24.5,0.5 L151.5,0.5
C164.75484,0.5 175.5,11.245166 175.5,24.5 L175.5,107.5 C175.5,
120.75484 164.75484,131.5 151.5,131.5 L24.5,131.5 C11.245166,
131.5 0.5,120.75484 0.5,107.5 z"/>
Другие советы
Использование закругленного прямоугольника и VideoBrush не лишает вас каких-либо функций / контроля над использованием отображаемого MediaElement - поскольку элемент в любом случае должен быть в Xaml, вы можете управлять им, используя обычные методы воспроизведения / паузы / остановки, за исключением того, что воспроизведение происходит в вашем прямоугольнике.Использование области клипа немного громоздко, потому что ее сложнее изменить по размеру.Прямоугольник лучше, потому что у вас есть гибкость компоновки.
<MediaElement x:Name="myElement" Source="clip.wmv" Visibility="Collapsed"/>
<Rectangle RadiusX="10" RadiusY="10" Width="640" Height="480">
<Rectangle.Fill>
<VideoBrush Source="myElement" Stretch="Uniform"/>
</Rectangle.Fill>
<Rectangle/>
Путь клипа с дает вам "жесткие" края - вы также могли бы использовать маску непрозрачности (хотя я полагаю, что для этого требуется гораздо больше вычислительной мощности).
Попробуй это
<Border CornerRadius="8" BorderBrush="Black" Background="Black" BorderThickness="3">
<MediaElement HorizontalAlignment="Center" VerticalAlignment="Top" Stretch="Fill" x:Name="Player" Source="/Assets/Videos/x.mp3" />
</Border>