首页 文章

wpf画布和视频控制全屏

提问于
浏览
1

在我的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 回答

  • 1

    Per Dennis Cheng的评论here

    Canvas是一个“无布局”的面板,所以孩子们的大小不会是父母 . 如果您希望子项填充或手动绑定到父项的大小,如果您必须使用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>
    

相关问题