Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Windows窗体DPI缩放_C#_Winforms_Dpi - Fatal编程技术网

C# Windows窗体DPI缩放

C# Windows窗体DPI缩放,c#,winforms,dpi,C#,Winforms,Dpi,我的应用程序在100%DPI设置下看起来不错,但当用户选择不同的(125%或150%)字时,容器中不适合。我试图用我在这里找到的解决方案解决这个问题:即: this.AutoScaleMode = AutoScaleMode.Dpi; 它修复了150%的设置(使其有点模糊,但这没关系),不幸的是,它没有对应用程序打算运行的PC上使用的125%进行相同的设置 是否有一些简单的解决方法,或者我必须手动重新排列每个表单? 所有容器都必须使用相同的自动缩放模式-此部件修复了我的问题 要求windows

我的应用程序在100%DPI设置下看起来不错,但当用户选择不同的(125%或150%)字时,容器中不适合。我试图用我在这里找到的解决方案解决这个问题:即:

this.AutoScaleMode = AutoScaleMode.Dpi;
它修复了150%的设置(使其有点模糊,但这没关系),不幸的是,它没有对应用程序打算运行的PC上使用的125%进行相同的设置

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

所有容器都必须使用相同的自动缩放模式-此部件修复了我的问题

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

  • 使用表格布局面板
  • 在tablelayoutpanel的单元格中拖动控件,并设置锚点和停靠属性
  • 设置拖动控件的rowspan和colspan属性以合并单元格
  • 设置拖动控件相对于单元格的边距和填充
  • 拖动所有控件并遵循相同的步骤,使用tablelayoutpanel完成设计
  • 现在设置tablelayoutpanel的所有列和行大小=自动调整大小(或百分比)
  • 设置tablelayoutpanel属性autosize=true,autosizemode=grow and shrink
  • 设置窗体属性autosize=true,autosizemode=grow和shrink
  • 如果windows应用程序以最大状态打开,请运行windows应用程序,然后设置tablelayoutpanel dock property=fill

  • 请看,在150%时,Windows将接管缩放,并让您的窗口将自己绘制成位图。然后,它将位图渲染到屏幕上,并重新调整大小使其变大。是的,这看起来很模糊,你必须声明你自己才能阻止它。您肯定不知道DPI,但是,您以某种方式阻止了控件正确地重新调整其大小。就像他们通常做的那样,屏幕截图从来都不是显示编码问题的好方法。可能与表单的字体属性有关,不要指定它。@HansPassant我将表单中的字体大小更改为12,这会导致问题吗?如果使用“表格布局”面板并设置边距和填充,您-最好确保不要嵌套那些表格布局面板。如何忽略win窗体窗口中的文本缩放,因为此解决方案需要太多工作(数百个窗体)?