我如何使我的WinForms应用程序DPI意识

时间:2011-03-14 09:32:06

标签: c# winforms dpi

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

由于我们没有时间,因此我可以使用最少量的重新分解来在此应用程序DPI-Aware上制作表单。

2 个答案:

答案 0 :(得分:13)

您必须不指定像素坐标和尺寸。当您将控件“放置”到表单上时,这会排除使用Control.TopControl.Left,这是设计师所做的。

要获得适用于不同DPI设置的UI,几乎所有内容都必须动态调整大小。控件应启用Control.AutoSize。但只是启用AutoSize会完全搞砸你的布局,因为控制位置仍然是静态的。

要动态定位控件,您可以使用容器控件,例如FlowLayoutPanelTableLayoutPanel(大小设置为AutoSize)。然后,根据自动确定的尺寸,那些内部的正常控制只会在窗体周围移动。

正如您所看到的,这并不简单,需要一些经验才能使其正确并需要大量测试(具有不同DPI设置的虚拟机工作得很好)。但是我觉得应该这样做,因为如果我的笔记本电脑上出现傻瓜和笨蛋,我总是很生气。

答案 1 :(得分:-3)

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

相关问题