无边界 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
。
我有一个 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
。