You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WPF无边框窗口显示尺寸小于设定值,如何实现跨多屏全屏?

解决WPF跨多显示器全屏无边框窗口的问题

你的代码已正确获取虚拟屏幕尺寸,但出现6像素间距、未覆盖任务栏的问题,核心源于WPF窗口默认行为和系统设置的影响,以下是修复方案:

关键修复点

  • 禁用窗口自动调整:设置ResizeMode = ResizeMode.NoResize,消除系统默认添加的隐形边框
  • 强制覆盖任务栏:设置Topmost = true,让窗口置于所有界面元素之上
  • 规避单屏最大化限制:保持WindowState.Normal,避免Maximized仅适配单屏的问题
  • 修正DPI缩放偏差:添加DPI感知配置,确保窗口尺寸匹配物理屏幕像素

修复后的完整代码

using System;
using System.Windows;

namespace BlackScreen
{
    public partial class App : Application
    {
        [STAThread]
        public static void Main()
        {
            App app = new App();
            Window window = new Window();

            // 核心窗口样式设置
            window.WindowStyle = WindowStyle.None;
            window.ResizeMode = ResizeMode.NoResize;
            window.Topmost = true;
            window.WindowState = WindowState.Normal;

            // 绑定虚拟屏幕全尺寸
            window.Top = SystemParameters.VirtualScreenTop;
            window.Left = SystemParameters.VirtualScreenLeft;
            window.Width = SystemParameters.VirtualScreenWidth;
            window.Height = SystemParameters.VirtualScreenHeight;

            window.Show();
            app.MainWindow = window;
            app.Run();
        }
    }
}

高DPI系统补充配置

如果系统开启了高DPI缩放,需在应用程序的app.manifest中添加以下配置,确保尺寸计算准确:

<application xmlns="urn:schemas-microsoft-com:asm.v3">
    <windowsSettings>
        <dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true/PM</dpiAware>
    </windowsSettings>
</application>

内容的提问来源于stack exchange,提问作者Harry Muscle

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 19:50:25