窗体根据 AutoScaleMode 缩放

PerMonitorV2 模式应用中,Windows 窗体一直在使用 Windows 为顶级窗口提供的线性大小(也称为 DPI 缩放大小),而不考虑 AutoScaleMode。 使用 AutoScaleMode.Font 缩放模式时,实现起来有问题,其中 Form 缩放应是非线性的。 子控件是以非线性形式缩放的,具体取决于分配给 Form 或子控件的字体。

此更改为顶级 Form 对象启用 WM_GETDPISCALEDSIZE 消息处理。 它利用 WM_GETDPISCALEDSIZE 让 Windows 知道 Form 可能需要非线性大小,具体取决于 AutoScaleMode

引入的版本

.NET 8 预览版 1

旧行为

以前,在 PerMonitorV2 模式应用中,顶级窗口由 Windows 缩放,而忽略了 WinForms 应用程序中指定的 AutoScaleMode。 此实现导致 Form 对象与其子控件之间的缩放不一致。

新行为

PerMonitorV2 模式应用中,顶级窗口(如窗体)根据 AutoScaleMode 缩放。 此实现可确保顶级窗口与其子控件一致缩放。

更改类别

此更改为行为变更

更改原因

进行此更改是为了改善 PerMonitorV2 模式中 Windows 窗体应用的高 DPI 体验。

不需要执行任何操作。

受影响的 API

不可用

请参阅