为了账号安全,请及时绑定邮箱和手机立即绑定

Windows 窗体根据不同的显示器分辨率调整大小

Windows 窗体根据不同的显示器分辨率调整大小

C#
www说 2023-07-22 16:25:17
我正在编写这个应用程序,它的大小为 (800 X 400)。问题是,当我在不同的显示器分辨率上运行它时,它会调整大小,并且所有对象都会变大。有没有办法在不最大化的情况下固定所有显示器分辨率的大小?
查看完整描述

1 回答

?
扬帆大鱼

TA贡献1799条经验 获得超9个赞

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

屏幕分辨率定义了构成视口的像素数。更改为高分辨率将使所有应用程序(而不仅仅是您的应用程序)显得更小。更改为低分辨率可以使所有应用程序(不仅仅是您的应用程序)显得更大。

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

Windows 和 WinForms 确实提供了一些用于缩放应用程序的机制,以便界面可以在不同的屏幕上更加成比例,但与 WPF/UWP 等其他技术相比,在 WinForms 中利用它可能会有点碰运气,特别是如果您有较旧的应用程序或代码库。

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

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

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

//img2.sycdn.imooc.com/64bb929e0001628203150144.jpg

阅读: Windows 窗体中的自动缩放

正确使用的关键是应用程序中的所有表单和控件都必须配置为使用基于 DPI 的缩放基于字体的缩放。当这两个概念混淆时,用户界面可能看起来一团糟,因为某些元素会调整大小,而另一些则不会。

此缩放行为在表单中定义为AutoScaleMode

//img1.sycdn.imooc.com/64bb92ae00019eed03430320.jpg

- 这在新应用程序中默认为字体

然而,许多第三部分组件可以设置为 DPI 模式,特别是如果它们有任何绘图画布或其显示逻辑由像素引用(这在 WinForms 自定义绘画中很常见)。

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


查看完整回答
反对 回复 2023-07-22
  • 1 回答
  • 0 关注
  • 214 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信