MediaElementは丸い角(radiusx、radiusy)をサポートしていません。角を丸めた矩形でVideoBrushを使うべきですか?Silverlightで角を丸めたビデオを表示する最適な方法は何ですか?
4
A
答えて
2
ええ - あなたはどちらも自分で質問して答えていますが、それは私が考えることができる2つの選択肢の1つです。問題が発生する理由は、MediaElementコントロールから取得した機能やコントロールの一部が失われてしまうためです。もう1つの方法は、これを行うことです。
- 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"/>
1
角丸長方形を使用し、VideoBrushは、表示されたのMediaElementを使用した上で、あなたにどんな機能/コントロールを失うことはありません - 要素がとにかくXAMLでなければならないので、あなたが通常の再生/一時停止を使用して、それを制御することができます/ Stopメソッド。ただし、再生は長方形で行われます。クリップ領域を使用すると、領域のサイズを変更するのが難しくなるため、扱いにくいものになります。あなたがレイアウトの柔軟性を持っているので、Rectangleがより優れています。
<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/>
0
とクリップパスは、あなたの「ハード」エッジを与える - (私はこれは非常に多くの処理能力を必要と想像するが)あなたも、同様OpacityMaskを使用することができます。
0
この
<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>
をお試しください