Quelle est la meilleure façon d’afficher une vidéo avec des coins arrondis dans Silverlight ?

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

  •  09-06-2019
  •  | 
  •  

Question

Le MediaElement ne prend pas en charge les coins arrondis (radiusx, radiusy).Dois-je utiliser un VideoBrush sur un rectangle aux coins arrondis ?

Était-ce utile?

La solution

Ouais - D'une certaine manière, vous posez et répondez vous-même à la question...Mais c’est l’une des deux options auxquelles je peux penser.Les raisons qui pourraient poser problème sont que vous perdez certaines fonctionnalités/contrôles que vous obtenez du contrôle MediaElement.Une autre option consiste à procéder ainsi :

  1. Ajoutez votre MediaElement à votre page.
  2. Dessinez un rectangle dessus et définissez le rayon du coin souhaité.
  3. Faites un clic droit sur le rectangle dans Blend et choisissez "Créer un chemin de détourage".
  4. Appliquez le chemin de détourage à votre MediaElement

De cette façon, vous utilisez toujours un contrôle MediaElement, mais vous pouvez "découper" ce que vous voulez pour obtenir l'effet arrondi souhaité.

Cet exemple montre un MediaElement tronqué.Je sais que ce n'est pas facile d'imaginer le chemin vectoriel, mais si vous l'ouvrez dans Blend, vous verrez un MediaElement arrondi.

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

Autres conseils

L'utilisation d'un rectangle arrondi et d'un VideoBrush ne vous fait perdre aucune fonctionnalité/contrôle sur l'utilisation d'un MediaElement affiché - puisque l'élément doit de toute façon être dans le Xaml, vous pouvez le contrôler en utilisant les méthodes Play/Pause/Stop habituelles, sauf que le la lecture se produit dans votre rectangle.L'utilisation d'une région de découpage est un peu lourde car il est plus difficile de redimensionner la région.Un rectangle est préférable car vous bénéficiez d'une flexibilité de mise en page.

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

Le chemin du clip vous donne des bords "durs" - vous pouvez également utiliser un OpacityMask (même si j'imagine que cela nécessite beaucoup plus de puissance de traitement).

Essaye ça

 <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>
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top