winforms - PowerShell - DPI 感知表单
问题描述
大家好,我很好奇在 PowerShell 中创建 Winform DPI 时如何使其具有感知能力?或者至少,防止它自动缩放。我已经用谷歌搜索并搜索和搜索,但我似乎无法找到答案或如何做到这一点的例子。最常见的答案是将其包含在清单中,但这对于 PowerShell 来说不是一个可行的选择。
如果有的话,我只是想阻止 Windows 自动重新调整 DPI 高于 96 (100%) 的表单。我尝试了AutoScaleMode = "DPI",但不幸的是它不起作用并且似乎没有做任何事情,因为将其设置为 "None" 或根本不包括它是相同的结果。
一个简单的例子......
Add-Type -AssemblyName 'System.Windows.Forms'
Add-Type -AssemblyName 'System.Drawing'
$Dialog = New-Object Windows.Forms.Form
$Dialog.Text = 'Main'
$Dialog.Size = New-Object Drawing.Size(200, 100)
$Dialog.AutoScaleMode = "DPI"
$Label = New-Object Windows.Forms.Label
$Label.Size = New-Object Drawing.Size(200, 16)
$Label.Location = New-Object Drawing.Size(10, 20)
$Label.Text = 'This text is to test autoscaling.'
$Dialog.Controls.Add($Label)
$Dialog.ShowDialog()
左边的图像是自动缩放和模糊的。我不想要这个,我希望它看起来像正确的。如果我能做到这一点,我会尝试弄清楚我将如何处理缩放。
解决方案
因此,我确实设法偶然找到了解决方法。我正在研究 WPF 表单(我对此知之甚少)并遇到了一个示例。在 WPF 中添加一个从未实际显示的最小虚拟窗口,以某种方式阻止 winforms 自动缩放。
# Load assemblies.
Add-Type -AssemblyName 'System.Windows.Forms'
Add-Type -AssemblyName 'System.Drawing'
Add-Type -AssemblyName 'PresentationFramework'
# Dummy WPF window (prevents auto scaling).
[xml]$Xaml = @"
<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Name="Window">
</Window>
"@
$Reader = (New-Object System.Xml.XmlNodeReader $Xaml)
$Window = [Windows.Markup.XamlReader]::Load($Reader)
# Business as usual.
$Dialog = New-Object Windows.Forms.Form
$Dialog.Text = 'Main Window'
$Dialog.Size = New-Object Drawing.Size(200, 100)
$Label = New-Object Windows.Forms.Label
$Label.Size = New-Object Drawing.Size(200, 16)
$Label.Location = New-Object Drawing.Size(10, 20)
$Label.Text = 'This text is to test autoscaling.'
$Dialog.Controls.Add($Label)
$Dialog.ShowDialog()
推荐阅读
- android - Android中基于Volley Response设置TextView
- python - 滚动条在 Python TK 中未激活
- java - SlidingWindows 用于 Apache Beam 上的慢速数据(大间隔)
- javascript - 如何使过滤器与angularjs中的数组一起使用
- dart - 如何在 Flutter 中使用 Bootstrap?
- git - 修补程序分支的单独环境?
- ruby - 我可以列出所有不匹配正则表达式的字符吗?
- node.js - 使用电子打包器打包的电子应用程序不适用于其他电脑的 nfc-pcsc 原因
- python - 在python中自动生成有效的json字符串
- c++ - 在显式实例化期间,不完整类型何时可以使用?