¿Cuál es la mejor manera de mostrar un vídeo con esquinas redondeadas en Silverlight?

StackOverflow https://stackoverflow.com/questions/31346

  •  09-06-2019
  •  | 
  •  

Pregunta

MediaElement no admite esquinas redondeadas (radiusx, radioy).¿Debo utilizar VideoBrush en un rectángulo con esquinas redondeadas?

¿Fue útil?

Solución

Sí, en cierto modo, estás haciendo y respondiendo la pregunta tú mismo...Pero esa es una de las dos opciones que se me ocurren.Las razones que podrían ser un problema es que pierde algunas de las funciones/control que obtiene del control MediaElement.Otra opción es hacer esto:

  1. Agregue su MediaElement a su página.
  2. Dibuja un rectángulo encima y establece el radio de esquina deseado.
  3. Haga clic derecho en el rectángulo en Mezclar y elija "Crear trazado de recorte"
  4. Aplique el trazado de recorte a su MediaElement

De esa manera, seguirás usando un control MediaElement, pero puedes "recortar" lo que quieras para obtener el efecto redondeado deseado.

Este ejemplo muestra un MediaElement recortado.Sé que no es fácil imaginar la ruta del vector, pero si lo abres en Blend verás un MediaElement redondeado.

<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"/>

Otros consejos

El uso de un rectángulo redondeado y un VideoBrush no le hace perder ninguna característica/control sobre el uso de un MediaElement mostrado; dado que el elemento tiene que estar en el Xaml de todos modos, puede controlarlo usando los métodos habituales Reproducir/Pausar/Detener, excepto que el la reproducción ocurre en su rectángulo.Usar una región de recorte es un poco difícil de manejar porque es más difícil cambiar el tamaño de la región.Un Rectángulo es mejor porque tiene flexibilidad de diseño.

<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/>

La ruta del clip le brinda bordes "duros"; también puede usar una OpacityMask (aunque imagino que esto requiere mucha más potencia de procesamiento).

Prueba esto

 <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>
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top