Windows窗体DPI缩放

Bar*_*ski 12 c# dpi winforms

在此输入图像描述

我的应用程序在100%DPI设置下看起来很好,但是当用户选择不同的(125%或150%)单词时,不适合容器.我尝试用我在这里找到的解决方案解决这个问题:检测Windows字体大小(100%,125%,150%),这是:

this.AutoScaleMode = AutoScaleMode.Dpi;
Run Code Online (Sandbox Code Playgroud)

它固定了150%的设置(使它有点模糊,但没关系),不幸的是它没有使用125%,这是在应用程序打算运行的PC上使用.

是否有一些简单的解决方法,或者我必须手动重新排列每个表单?

Bar*_*ski 9

创建DPI感知应用程序

所有容器必须使用相同的AutoScaleMode - 这部分修复了我的问题

要求windows应用程序在不同分辨率下应具有相同的布局,这意味着在更改分辨率时应用程序的布局应该没有任何影响.以下是执行此操作的步骤.

  1. 使用表格布局面板
  2. 在tablelayoutpanel的单元格中拖动控件并设置锚点和停靠属性.
  3. 设置拖动控件的rowspan和colspan属性以合并单元格
  4. 设置相对于单元格的拖动控件的边距和填充.
  5. 拖动所有控件并按照相同的步骤,使用tablelayoutpanel完成设计
  6. 现在设置tablelayoutpanel = autosize(或%)的所有列和行大小
  7. 设置tablelayoutpanel属性autosize = true,autosizemode = grow和shrink
  8. 设置表单属性autosize = true,autosizemode = grow和shrink
  9. 运行Windows应用程序如果您的Windows应用程序以最大状态打开,则设置tablelayoutpanel dock property = fill.

  • 如果你使用表格布局面板并设置边距和填充,你[可能会在一个糟糕的时间](https://support.microsoft.com/en-us/help/3044516/nested-tablelayoutpanel-is-displayed-with -large-empty-spaces-in-a-windows-forms-application-on-high-dpi-monitors) - 更好地确保你不嵌套那些表布局面板. (2认同)