Qual è il modo migliore per visualizzare un video con angoli arrotondati in Silverlight?

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

  •  09-06-2019
  •  | 
  •  

Domanda

MediaElement non supporta gli angoli arrotondati (radiusx, Radiy).Dovrei utilizzare un VideoBrush su un rettangolo con angoli arrotondati?

È stato utile?

Soluzione

Sì, in un certo senso stai facendo la domanda e rispondendo tu stesso...Ma questa è una delle due opzioni che mi vengono in mente.Il motivo per cui potrebbe rappresentare un problema è la perdita di alcune funzionalità/controllo ottenuti dal controllo MediaElement.Un'altra opzione è fare questo:

  1. Aggiungi il tuo MediaElement alla tua pagina.
  2. Disegna un rettangolo sopra di esso e imposta il raggio dell'angolo desiderato
  3. Fare clic con il tasto destro del mouse sul rettangolo in Blend e scegliere "Crea tracciato di ritaglio"
  4. Applica il tracciato di ritaglio al tuo MediaElement

In questo modo stai ancora utilizzando un controllo MediaElement, ma puoi "ritagliare" via tutto ciò che desideri per ottenere l'effetto arrotondato desiderato.

Questo esempio mostra un MediaElement ritagliato.So che non è facile immaginare il percorso vettoriale, ma se lo apri in Blend vedrai un MediaElement arrotondato.

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

Altri suggerimenti

L'uso di un rettangolo arrotondato e di un VideoBrush non ti fa perdere alcuna funzionalità/controllo sull'utilizzo di un MediaElement visualizzato: poiché l'elemento deve comunque essere in Xaml, puoi controllarlo utilizzando i soliti metodi Riproduci/Pausa/Stop, tranne che il la riproduzione avviene nel tuo rettangolo.L'uso di una regione di clip è un po' scomodo perché è più difficile ridimensionare la regione.Un rettangolo è migliore perché offre flessibilità di layout.

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

Il percorso della clip ti dà bordi "duri": potresti anche usare anche una OpacityMask (anche se immagino che questo richieda molta più potenza di elaborazione).

Prova questo

 <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>
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top