在Silverlight中显示带圆角的视频的最佳方法是什么?

时间:2008-08-27 23:48:37

标签: silverlight

MediaElement不支持圆角(radiusx,radiusy)。我应该在带圆角的矩形上使用VideoBrush吗?

4 个答案:

答案 0 :(得分:2)

是的 - 在某种程度上,你自己都在询问和回答这个问题......但这是我能想到的两个选择之一。可能存在问题的原因是您丢失了从MediaElement控件获得的一些功能/控件。另一种选择是这样做:

  1. 将您的MediaElement添加到您的页面。
  2. 在其上方绘制一个矩形并设置所需的圆角半径
  3. 右键单击Blend中的矩形,然后选择“创建剪切路径”
  4. 将剪切路径应用于MediaElement
  5. 这样你仍然使用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 :(得分:0)

使用圆角矩形和VideoBrush不会丢失使用显示的MediaElement的任何功能/控制 - 因为元素必须在Xaml中,您可以使用常用的播放/暂停/停止方法控制它,除了播放在矩形中。使用剪辑区域有点笨拙,因为调整区域的难度更大。 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/>

答案 2 :(得分:0)

剪辑路径为您提供“硬”边缘 - 您也可以使用OpacityMask(虽然我想这需要更多的处理能力)。

答案 3 :(得分: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>