C# wpf画布和视频控制全屏
在我的WPF程序中,我想画一个形状。然后在我按下一个按钮后,程序以全屏模式播放视频。我似乎无法在画布上全屏播放视频 我的XAML如下所示C# wpf画布和视频控制全屏,c#,wpf,video,wpf-controls,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"
<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>
如你所见,我把视频放在我的形状前面。当按下按钮时,我开始播放视频。因此,视频将出现在形状的前面。问题是视频非常小。如何实现全屏?根据Dennis Cheng的评论: 画布是一个“无布局”面板,因此子对象的大小不会与父对象的大小相同。尝试 如果希望子对象填充或手动绑定到父对象的大小,请使用网格 如果必须使用画布:
这会将视频的宽度缩放到包含画布的宽度,但仍与原始尺寸成比例
如果使用栅格,则可以实现您的目标缩放:
<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>
你能在“网格”上画画吗?我需要画椭圆,路径等。把画布叠在MediaElement上怎么样?太好了。您的方法1已经运行良好。非常感谢。一个小问题是,如果视频与画布的纵横比不同,那么视频就会失真?恐怕失真问题没有太多的解决方法-您无法使用MediaElement自动为视频添加额外像素。你唯一能做的就是重新编码视频,使其具有不同的纵横比,或者添加一个信箱。您可以使用一些中等强度的FFmpeg命令来实现这一点:。
<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>