Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/263.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窗体使用不同的监视器分辨率调整大小_C#_Winforms - Fatal编程技术网

C# windows窗体使用不同的监视器分辨率调整大小

C# windows窗体使用不同的监视器分辨率调整大小,c#,winforms,C#,Winforms,我正在写这个应用程序,它的大小是(800 X 400)。问题是,当我在不同的显示器分辨率上运行它时,它会调整大小,所有的对象都会变大。有没有一种方法可以在不最大化的情况下为所有监视器分辨率固定其大小?通常,如果您的表单定义为固定大小(800 x 400),那么如果您将分辨率更改为(800 x 600),它通常会在同一屏幕上显示得更大 屏幕分辨率定义组成视图端口的像素数。更改为高分辨率将使所有应用程序,而不仅仅是您的应用程序看起来更小。更改为低分辨率可以使所有应用程序(不仅仅是您的应用程序)看起来

我正在写这个应用程序,它的大小是(800 X 400)。问题是,当我在不同的显示器分辨率上运行它时,它会调整大小,所有的对象都会变大。有没有一种方法可以在不最大化的情况下为所有监视器分辨率固定其大小?

通常,如果您的表单定义为固定大小(800 x 400),那么如果您将分辨率更改为(800 x 600),它通常会在同一屏幕上显示得更大

屏幕分辨率定义组成视图端口的像素数。更改为高分辨率将使所有应用程序,而不仅仅是您的应用程序看起来更小。更改为低分辨率可以使所有应用程序(不仅仅是您的应用程序)看起来更大

更改屏幕分辨率就是更改DPI

Windows和WinForms确实提供了一些扩展应用程序的机制,因此界面在不同屏幕上的比例可以更大,但与WPF/UWP等其他技术相比,WinForms中的优势可能更容易利用,尤其是如果您有较旧的应用程序或代码库

如果缩放不是您所期望的,请首先检查用户是否已将其显示设置中的缩放设置恢复为100%,许多笔记本电脑和平板电脑的缩放设置为125%OOTB。当您没有正确定义界面以利用字体缩放时,它可能看起来有点古怪

将windows字体缩放设置回100%意味着您的应用程序将只需处理DPI缩放问题,而不是windows可能施加的字体和DPI缩放

在windows 10中,显示设置中的字体缩放如下所示:

仔细阅读:

正确操作的关键在于,必须将应用程序中的所有表单和控件配置为使用基于DPI的缩放或基于字体的缩放。当这两个概念混淆时,UI可能看起来像一团乱,因为一些元素会调整大小,而其他元素可能不会

这种缩放行为在表格中定义为
自动缩放模式
: -在新应用程序中,默认为字体

但是,许多第三部分组件可能会设置为DPI模式,特别是当它们有任何图形画布或它们的显示逻辑由像素引用时(这在WinForms自定义绘制中非常常见)

因此,将表单设置为使用DPI缩放可能会解决您的问题

另外,请查看中的一些帖子,以帮助解释您的观察结果:



一般来说,如果您的表单定义为固定大小(800 x 400),那么如果您将分辨率更改为(800 x 600),它通常会在同一屏幕上显示得更大

屏幕分辨率定义组成视图端口的像素数。更改为高分辨率将使所有应用程序,而不仅仅是您的应用程序看起来更小。更改为低分辨率可以使所有应用程序(不仅仅是您的应用程序)看起来更大

更改屏幕分辨率就是更改DPI

Windows和WinForms确实提供了一些扩展应用程序的机制,因此界面在不同屏幕上的比例可以更大,但与WPF/UWP等其他技术相比,WinForms中的优势可能更容易利用,尤其是如果您有较旧的应用程序或代码库

如果缩放不是您所期望的,请首先检查用户是否已将其显示设置中的缩放设置恢复为100%,许多笔记本电脑和平板电脑的缩放设置为125%OOTB。当您没有正确定义界面以利用字体缩放时,它可能看起来有点古怪

将windows字体缩放设置回100%意味着您的应用程序将只需处理DPI缩放问题,而不是windows可能施加的字体和DPI缩放

在windows 10中,显示设置中的字体缩放如下所示:

仔细阅读:

正确操作的关键在于,必须将应用程序中的所有表单和控件配置为使用基于DPI的缩放或基于字体的缩放。当这两个概念混淆时,UI可能看起来像一团乱,因为一些元素会调整大小,而其他元素可能不会

这种缩放行为在表格中定义为
自动缩放模式
: -在新应用程序中,默认为字体

但是,许多第三部分组件可能会设置为DPI模式,特别是当它们有任何图形画布或它们的显示逻辑由像素引用时(这在WinForms自定义绘制中非常常见)

因此,将表单设置为使用DPI缩放可能会解决您的问题

另外,请查看中的一些帖子,以帮助解释您的观察结果:



--请参阅此处的注释,它无法解决问题@jimi您是否已将表单的
AutoScaleMode
设置为
Dpi
?是的,我已经设置了。那么,您的实现在某些部分中有所欠缺。但没人能看到你修改了什么。记住还要显式地设置控件的字体,不要让它们继承它(除非您也明确计划了)请参阅此处关于它无法解决问题的注释@jimia您是否已将表单的
AutoScaleMode
设置为
Dpi
?是的,我已经设置了。那么,您的实现在某些部分中缺失了。但没人能看到你修改了什么。记住还要显式设置控件的字体,不要让它们继承它(除非您也明确计划了)。