使用DPI正确缩放WinForms时出现问题我无法让WinForms应用程序在高DPI设置下正确显示。我检查了各种站点,WinForms具有正确的AutoScaleMode。我试过将它设置为DPI和字体。然而,当使用高DPI设置(例如125%)时,表格总是在底部附近被截断。我添加了一些代码来检查,如果我将AutoScaleMode设置为DPI,当加载表单时,我看到当加载表单时AutoScaleDimensions是120,120,而CurrentAutoScaleDimensions也是120,120。在Form.designer.cs文件中,有一行将AutoScaleDimension设置为96,96。如果我将AutoScaleMode设置为Font,那么我可以在设计器中看到AutoScaleDimension已正确设置为新的System.Drawing.SizeF(6F、13F),但是当加载表单时,AutoScaleDimension和CurrentAutoScaleDimension都设置为8F、16F。该应用程序是一些WPF和WinForms的混合体,首先是WPF屏幕。因此,基于混合WinForms和WPF应用程序中.Net3.5中的DPI缩放,我尝试为应用程序设置TextFormattingMode,并为首先显示的WPF屏幕设置“显示”,但没有任何区别。坦率地说,我不知道是什么原因造成的。我想我可以添加代码以通过在运行时检测DPI以编程方式调整大小,但我不应该这样做。AutoScaleMode(和相关)属性应该使这相当自动化。那么我还应该检查什么可能导致这个问题?几天前我遇到了类似的问题。经过几个小时的研究,我终于找到了一个非常简单的解决方案——添加到应用程序清单。下面是来自Microsoft网站的示例。对于我的情况,我需要将其设置为Per-monitor以使其正常工作。也就是把中间那一行改成Per-monitor。下面列出了每个值之间的差异(这些来自MSDN):是否可以在屏幕不再大到足以显示整个表格的情况下使用监视器尺寸和更高的DPI设置?我这样说是因为我正在开发一个1024x768的winforms应用程序,并且正在研究用户DPI设置。如果我将DPI设置为150%,我将无法再在显示器上看到表单的底部,但应用程序可以正确缩放。以上就是《C#学习教程:使用DPI让WinForms正确展开》的全部内容。涉及侵权,请点击维权联系管理员删除。如需转载请注明出处:
