Wie lässt sich ein Video mit abgerundeten Ecken in Silverlight am besten anzeigen?

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

  •  09-06-2019
  •  | 
  •  

Frage

Das MediaElement unterstützt keine abgerundeten Ecken (radiusx, radiusy).Sollte ich einen VideoBrush für ein Rechteck mit abgerundeten Ecken verwenden?

War es hilfreich?

Lösung

Ja – in gewisser Weise stellen und beantworten Sie die Frage selbst ...Aber das ist eine der beiden Optionen, die mir einfallen.Der Grund, der möglicherweise ein Problem darstellt, besteht darin, dass Sie einige der Funktionen/Kontrollen verlieren, die Sie vom MediaElement-Steuerelement erhalten.Eine andere Möglichkeit besteht darin, Folgendes zu tun:

  1. Fügen Sie Ihr MediaElement zu Ihrer Seite hinzu.
  2. Zeichnen Sie ein Rechteck darüber und legen Sie den gewünschten Eckenradius fest
  3. Klicken Sie mit der rechten Maustaste auf das Rechteck in Blend und wählen Sie „Beschneidungspfad erstellen“.
  4. Wenden Sie den Beschneidungspfad auf Ihr MediaElement an

Auf diese Weise verwenden Sie immer noch ein MediaElement-Steuerelement, können aber alles, was Sie möchten, „ausschneiden“, um den gewünschten abgerundeten Effekt zu erzielen.

Dieses Beispiel zeigt ein abgeschnittenes MediaElement.Ich weiß, es ist nicht einfach, sich den Vektorpfad vorzustellen, aber wenn Sie ihn in Blend öffnen, sehen Sie ein abgerundetes 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"/>

Andere Tipps

Durch die Verwendung eines abgerundeten Rechtecks ​​und eines VideoBrush verlieren Sie keine Funktionen/Kontrolle über die Verwendung eines angezeigten MediaElements – da das Element ohnehin im XAML vorhanden sein muss, können Sie es mit den üblichen Play/Pause/Stop-Methoden steuern, mit der Ausnahme, dass die Die Wiedergabe erfolgt in Ihrem Rechteck.Die Verwendung einer Clip-Region ist etwas umständlich, da es schwieriger ist, die Größe der Region zu ändern.Ein Rechteck ist besser, da Sie beim Layout flexibler sind.

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

Der Clip-Pfad gibt Ihnen „harte“ Kanten – Sie könnten auch eine OpacityMask verwenden (obwohl ich mir vorstellen kann, dass dies viel mehr Rechenleistung erfordert).

Versuche dies

 <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>
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top