无边界 Winforms window 的 DPI 缩放出错

DPI scaling of borderless Winforms window goes wrong

我有一个 PowerShell 脚本无边界 window 随着越来越多的人使用 DPI 缩放,我测试了我的形成相应的。

奇怪的是,它似乎(有点)缩放到 150%,但在 175% 时,表单本身(红色)比 richtextbox(灰色) 增长得更多,因为在下面的例子中看到。

关于如何解决或防止这种情况的任何想法?

[void][System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")

$form = New-Object System.Windows.Forms.Form
$form.Size = "200,200"
$form.FormBorderStyle = "None"
$form.BackColor = "#C15959" 
$form.TopMost = $true
$form.StartPosition = "CenterScreen"

$form.AutoScalemode = "Dpi"
$form.AutoSize = $true
$form.AutoSizeMode = "GrowOnly"

$rtb = New-Object System.Windows.Forms.RichTextBox
$rtb.BorderStyle = "FixedSingle"
$rtb.BackColor = "#EDEDED"
$rtb.Anchor = "Top,Bottom,Right,Left"
$rtb.Size = "181,155"
$rtb.Location = "1,1"
$rtb.AutoSize = $true

$rtb.add_mouseclick({ $form.close()})
$form.Controls.Add($rtb)
$form.showdialog()

100% DPI 缩放的表单:

175% DPI 缩放比例的表单:

解决方案不是为表单本身设置 size,而是设置 clientsize