MediaElement は角の丸み (radiusx、radiusy) をサポートしていません。角の丸い Rectangle で VideoBrush を使用する必要がありますか?
4 に答える
ええ - ある意味では、あなたは自分自身で質問をし、質問に答えています... しかし、それは私が考えることができる 2 つの選択肢のうちの 1 つです。問題になる可能性がある理由は、MediaElement コントロールから取得した機能/コントロールの一部が失われることです。別のオプションは、これを行うことです:
- MediaElement をページに追加します。
- その上に長方形を描き、必要な角の半径を設定します
- Blend で長方形を右クリックし、[クリッピング パスの作成] を選択します。
- クリッピング パスを 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"/>
角の丸い長方形とVideoBrushを使用しても、表示されたMediaElementの使用に対する機能/制御が失われることはありません-要素はXamlに含まれている必要があるため、通常のPlay / Pause/Stopメソッドを使用して制御できます。再生は長方形で行われます。クリップ領域を使用すると、領域のサイズを変更するのが難しいため、少し扱いにくくなります。レイアウトに柔軟性があるため、長方形の方が優れています。
<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/>
クリップ パスを使用すると、「ハード」なエッジが得られます。OpacityMask も使用できます (ただし、これにはより多くの処理能力が必要になると思います)。