我做了一个wpf的mediaelement视频播放控件,现在想做一个全屏的功能不知道该如何下手。
private void FullOrMin(Window window)
{
// 如果是全屏,则窗口
if (window.WindowState == WindowState.Maximized)
{
window.Topmost = false;
window.WindowState = WindowState.Normal;
window.WindowStyle = WindowStyle.SingleBorderWindow;
// 设置为可调整窗体大小
window.ResizeMode = ResizeMode.CanResizeWithGrip;
window.Width = 800;
window.Height = 600;
// 获取窗口句柄
var handle = new WindowInteropHelper(window).Handle;
// 获取当前显示器屏幕
// Screen screen = Screen.FromHandle(handle);
window.Left = (SystemParameters.PrimaryScreenWidth - window.Width) / 2;//(screen.Bounds.Width - window.Width) / 2;
window.Top = (SystemParameters.PrimaryScreenHeight - window.Height) / 2;//(screen.Bounds.Height - window.Height) / 2;
//window.WindowState = WindowState.Minimized;
return;
}
// 如果是窗口,则全屏
if (window.WindowState == WindowState.Normal)
{
// 变成无边窗体
window.WindowState = WindowState.Normal; // 假如已经是Maximized,就不能进入全屏,所以这里先调整状态
window.WindowStyle = WindowStyle.None;
window.ResizeMode = ResizeMode.NoResize;
// 最大化后总是在最上面
window.Topmost = true;
//获取窗口句柄
var handle = new WindowInteropHelper(window).Handle;
// 获取当前显示器屏幕
// Screen screen = Screen.FromHandle(handle);
// 调整窗口最大化
window.MaxWidth = SystemParameters.PrimaryScreenWidth;
window.MaxHeight = SystemParameters.PrimaryScreenHeight;
window.WindowState = WindowState.Maximized;
// 解决切换应用程序的问题
window.Activated += new EventHandler(window_Activated);
window.Deactivated += new EventHandler(window_Deactivated);
}
}
static void window_Deactivated(object sender, EventArgs e)
{
var window = sender as Window;
window.Topmost = false;
}
static void window_Activated(object sender, EventArgs e)
{
var window = sender as Window;
window.Topmost = true;
}
//调用(窗口状态下调用就是全屏,全屏调用就是窗口),调的时候把窗口或者关闭的代码也写上,不然没有关闭的地方
FullOrMin(this);//可以根据自己的需求再改改
您好,首先感谢你的回答。 我看了一下 你给的代码好像是window下只有播放器的情况下 做的window全屏。我想要的效果是window下面有很多内容不只是播放器。播放器是嵌入进去的。在这种情况下做播放器的全屏。
@c#牛刀小试: 有什么区别么,我可以理解成pps的那种视频全屏么?
如果是那样也是一样的道理啊,在你的布局界面可以用2个上下层的grid,底层的grid就是显示正常的布局,上层的grid默认隐藏,当播放器需要全屏的时候你首先需要判断当前windows窗口是否全屏,如果不是你可以按照上面的代码把windows窗口置为全屏,然后把播放器加载到上层的那个grid里显示出来,这样就是你想要的全屏了吧?这个思路是你想要的结果么?
@澈澈: 我做的是一个用户控件 控件里面有个全屏按钮 点击直接全屏 是不要考虑嵌入在哪里 也无法操作它当前嵌入界面的布局的。