Windows 11 2024H2更新后ControlPaint.DrawReversibleFrame多屏显示异常
多显示器下ControlPaint.DrawReversibleFrame在Win11 2024H2更新后显示异常
我使用了10余年未改动的图表软件,在安装Windows 11 2024H2(2025年4月累积更新)后出现显示异常:底部的1、2号显示器(布局为左下、右下)上的图表缩放选区,会错误显示到顶部的3、4号显示器(左上、右上)。该显示器布局已使用5年以上,可明确判定是此次系统更新导致的行为变更。
经调试发现,图表库调用了System.Windows.Forms的ControlPaint.DrawReversibleFrame方法,当前该方法绘制的矩形仅会显示在顶部显示器或完全不显示。通过固定X坐标、宽高,遍历大量Y值调用该方法测试后,我推断该方法存在裁剪逻辑:仅保留Y值在0-1080(我的显示器分辨率为1920x1080)范围内的内容,且会将Y值向下偏移1080。底部显示器的Y值处于0-1080区间,偏移后变为负Y值,对应顶部显示器区域;Y值超出0-1080范围时则完全不显示。这使得无法通过坐标重计算等方式修复该问题,除非存在可修改该方法行为的设置。
我已尝试以下操作,但均无效果:
- 将应用设置为DPI感知(Per Monitor或Per Monitor V2)
- 更新最新显示驱动
- 确保所有显示器分辨率与缩放比例保持一致(1920x1080,100%)
复现问题的示例代码
for (int i = 0; i < 60; i++) { Rectangle rect3 = new Rectangle(600, i * 100, 300, 20); Rectangle rect4 = new Rectangle(3000, -2000 + i * 100, 300, 20); ControlPaint.DrawReversibleFrame(rect3, Color.Green, FrameStyle.Thick); ControlPaint.DrawReversibleFrame(rect4, Color.Red, FrameStyle.Thick); Thread.Sleep(1000); }
内容的提问来源于stack exchange,提问作者aQuant
相关产品推荐
相关产品推荐

