允许透明度使过扫描最大化
本文关键字:扫描 最大化 透明度 | 更新日期: 2023-09-27 18:35:03
我目前正在使用 WPF 制作媒体播放器,遇到了一个问题。
我希望布局没有常规的窗口边框和阴影。我通过设置 WindowStyle=none 和 AllowTransparency=true 来做到这一点。这一切都很好用,只要我不想全屏使用它。一旦我尝试将 WindowState 设置为最大化,它就会疯狂地过度扫描(它会切断所有边缘(。这显然是由 AllowTransparency=true 部分引起的。如果我将其设置回 false,则最大化部分将按预期工作。不幸的是,一旦应用程序启动,我就无法设置允许透明度。我可以通过使用边框并调整其边距来弥补这一点,但它看起来并不正确,我不确定它是否适用于不同的分辨率。
所以总结一下:
- 是否有可能使 WindowState 最大化像正常工作一样使用 AllowTransparency=true?
- 或者有没有另一种方法可以在不设置 AllowTransparency=true 的情况下使窗口没有正常的窗口边框
- 或者有没有更好的方法可以使应用程序全屏运行?
没有人有解决方案或想法来实现这一点?
您在 MSDN 论坛上发布了答案,但不在这里,所以在这里;
解决方案是设置 调整大小模式 = NoResize 当进入全屏时。似乎 AllowTransparency=True 仍然具有窗口的常规边框,但只是隐藏了它,因此当您最大化时,它会尝试补偿该边框。但是,如果您更改调整大小模式,边框将消失。
https://social.msdn.microsoft.com/Forums/vstudio/en-US/0b938537-c048-4122-8a2f-29d04d21f2df/allowtransparency-in-fullscreen?forum=wpf
我的解决方案适用于:
允许透明度="真">
窗口样式="无">
您无法设置最大化,因为它会全屏显示。
if (window.Tag == null){
window.Tag = window.Width + ";" + window.Height + ";" + window.Left + ";" +
window.Top;
window.Width = System.Windows.Forms.Screen.PrimaryScreen.WorkingArea.Width;
window.Height = System.Windows.Forms.Screen.PrimaryScreen.WorkingArea.Height;
window.Left = 0;
window.Top = 0;
window.WindowState = WindowState.Normal;
} else {
List<int> sizes = new List<int>(window.Tag.ToString().Split(';').Select(int.Parse));
window.Width = sizes[0];
window.Height = sizes[1];
window.Left = sizes[2];
window.Top = sizes[3];
window.Tag = null;
}