wpf画布和视频控制全屏

时间:2015-08-13 14:09:44

标签: c# wpf video wpf-controls

在我的WPF程序中,我想绘制一个形状。然后按下按钮后,程序以全屏模式播放视频。我似乎无法在画布上全屏播放视频。

我的XAML如下所示

<Canvas>
    <Ellipse Name="face1" Panel.ZIndex="2" Fill="Green" Width="400" Height="400" />
    <MediaElement Panel.ZIndex="1000" Name="videoControl1" Stretch="Fill" 
                  Source="C:\Users\videos\carcrash.mp4" 
                  LoadedBehavior="Manual" MediaEnded="videoControl1_MediaEnded">            
    </MediaElement>
</Canvas>

正如您所看到的,我将视频放在了我的面前。当sson作为按钮被按下时,我开始播放视频。所以视频将在形状的前面。问题是视频非常小。如何全屏显示?

1 个答案:

答案 0 :(得分:1)

Per Dennis Cheng的评论here

  

Canvas是一个“无布局”面板,因此儿童不会调整为父级。尝试   网格如果您希望子项填充或手动绑定到父项的大小   如果你必须使用画布:

<Canvas x:Name="MyCanvas"
    Width="300"
    Height="300">
    <Ellipse Name="face1"
            Width="400" 
            Height="400"
            Panel.ZIndex="2"
            Fill="Green" />
    <MediaElement Name="videoControl1"
                Width="{Binding RelativeSource={RelativeSource Self},
                                Path=Parent.ActualWidth}"
                Height="{Binding RelativeSource={RelativeSource Self},
                                Path=Parent.ActualHeight}"
                Panel.ZIndex="1000"
                Source="C:\Users\videos\carcrash.mp4" />
</Canvas>

将视频的宽度缩放到包含Canvas的宽度,但它仍与原始尺寸成比例。

如果您使用网格,您可以实现您的目标:

<Grid Width="500" Height="500">
    <Ellipse Name="face1"
            Width="400"
            Height="400"
            Panel.ZIndex="2"
            Fill="Green" />
    <MediaElement Name="videoControl1"
                Grid.Row="0"
                Panel.ZIndex="1000"
                Source="D:\Downloads\The.Strain.S01E13.HDTV.x264-LOL.mp4"
                Stretch="Fill" />
</Grid>