我正在修改我公司现有的一段代码。我们目前有我们自己的自定义表单,它将其大小存储在配置文件中,以便当用户返回时,窗口大小与以前相同。我注意到的情况是,在用更高的DPI设置进行测试之后,所存储的大小是来自DPI设置所需的最小大小的膨胀大小。举个例子,我有一个登录表单,它是96x96 DPI的374 x 243。当我以150%加载应用程序时,表单展开为695x467,略小于任一方向的尺寸的两倍。如果我将计算机更改为DPI上的100%,则登录表单保持在695x467,这是该DPI上的一个更大的显示屏。如何获得当前表单的96x96 DPI大小
我们使用存储大小的代码如下:
AppConfig.GetAppConfig().SetFormAttrValue(Name, "LocationX", Location.X);
AppConfig.GetAppConfig().SetFormAttrValue(Name, "LocationY", Location.Y);
AppConfig.GetAppConfig().SetFormAttrValue(Name, "Width", Size.Width);
AppConfig.GetAppConfig().SetFormAttrValue(Name, "Height", Size.Height);
是否有一个良好的属性来读取,以获得形式的非缩放大小?我怀疑,基于从100%到150%的非线性增长变成了185%的增长,这是一个比我想要的更加棘手的问题(我最初希望能够根据Graphics.DpiX
和Graphics.DpiY
对象进行转换),但我想我会问,以防万一有人知道一个简单的答案。谢谢。
我确定有人有你的答案,但说实话,你存储表单的大小的方式就是这样,表单的大小......如果你在桌面上搞乱了DPI/Zoom,表格的大小根本不变,这是正常的。它应该保持设置大小的参数,而不是尺寸VS缩放参数......无论如何。 – MaxOvrdrv
@MaxOvrdrv:这将是理想的,但不幸的是,它似乎并没有这样工作。 Size值明显不同,尽管我认为可能必须将表单设置为AutoSize以适应其中的控件。增加新的DPI设置的控件,并增加表单。 –
你试过调试过吗?例如:在表单上放置一个按钮以进行测试,并在按钮单击事件中,触发一个消息框,告诉您表单的实际大小。更改DPI,警报大小,现在您知道系统在每个DPI设置上看到的大小...;) - AutoSize可能是一个很好的检查/地点,可以开始查看DPI更改时大小是否发生变化。 – MaxOvrdrv