在Silverlight中显示带有圆角的视频的最佳方法是什么?
时间:2020-03-05 18:44:09 来源:igfitidea点击:
MediaElement不支持圆角(半径,半径)。我应该在圆角矩形上使用VideoBrush吗?
解决方案
回答
是的,从某种意义上来说,我们既要问又要回答问题……但这是我能想到的两个选择之一。可能存在问题的原因是,我们失去了从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(尽管我认为这需要更多的处理能力)。