繁体   English   中英

如何使WinForms应用程序具有DPI意识

[英]How can i Make my WinForms Application DPI-Aware

我在一家将Winforms应用程序作为我们旗舰产品的公司里工作。 我们最近重新设计了品牌和用户界面。 我们注意到,表单现在无法正确显示文本,并且某些控件未对齐或消失在边缘。

我是否有可能在没有时间的情况下以最少的重构次数在此应用程序上使用DPI-Aware制作表单。

不要指定像素坐标和大小,这一点很重要。 当您将控件“仅”放置在窗体上时,这将使用Control.TopControl.Left来排除设计人员所做的工作。

为了获得可以使用不同DPI设置的UI,几乎所有内容都必须动态调整大小。 控件应启用Control.AutoSize 但是仅启用AutoSize会完全AutoSize您的布局,因为控件位置仍然是静态的。

要动态定位控件,可以使用容器控件,例如FlowLayoutPanelTableLayoutPanel (尺寸设置为AutoSize )。 然后,根据自动确定的大小,其中的普通控件将仅围绕表单移动。

如您所见,这并不简单,需要一点经验才能正确完成,并且需要进行大量测试(具有不同DPI设置的虚拟机效果很好)。 但我认为绝对应该这样做,因为如果笔记本电脑上看起来有些愚蠢和有问题,我总是会感到恼火。

最快的方法是重写OnPaint并使用Graphics.DpiX和DpiY属性。 请参考http://msdn.microsoft.com/zh-cn/library/ms701681(VS.85).aspx,仅建议使用清单文件而不是SetDpiAware

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM