winforms 如何使.NET 6 Windows窗体忽略DPI缩放?

vybvopom  于 2023-06-24  发布在  .NET
关注(0)|答案(1)|浏览(214)

我使用Windows窗体来托管使用SharpDX RenderForm的DirectX渲染的内容。问题是,当我设置表单Size时,它会根据显示器的缩放因子进行缩放,这不是我所需要的,因为我是基于像素的渲染。
我尝试将表单的AutoScaleMode设置为None,但似乎没有效果。
我还在System.Windows.Forms.ApplicationConfigurationSection中使用了DpiAwareness以及应用程序清单中的相应设置。
我的目标是以像素为单位做所有事情。

gmxoilav

gmxoilav1#

在创建主窗体之前运行的这一行对我很有效:

Application.SetHighDpiMode(HighDpiMode.PerMonitorV2);

原因是,通过显式声明对缩放的感知,您可以选择退出Windows窗体,通过隐式乘以所有大小来为您处理缩放。
AutoScaleMode原来是不需要的。
根据SetHighDpiMode documentation,manifest方法应该也可以工作,但我怀疑在从JetBrains Rider启动项目时,有些侥幸阻止了它。

相关问题