c# - 我可以提高 Windows 窗体的分辨率/DPI 吗? (一些扩大控制的方法?)

标签 c# winforms forms resolution dpi

我正在用 C# 开发一个 Windows 窗体应用程序,供办公室使用。到目前为止,通过锚定和自动调整大小,控件可以在默认窗体大小、最大化等情况下很好地自行布局。

表格在 session 室的大投影屏幕上看起来不太好。文字太小,不易阅读。

我们在我们的机器上运行 Windows 7,因此作为一项实验,我将显示渲染从 100% 提高到 150%。这使得控件上的文本变得模糊,所以我做了一些研究,然后将其添加到我的 Main() 方法中。

[System.Runtime.InteropServices.DllImport("user32.dll")]
private static extern bool SetProcessDPIAware;

效果非常好 - 应用程序按比例放大,控件大且可读,一切都继续良好布局。唯一的问题是更改显示渲染会强制您注销,这很不方便,而且实际上我们的用户永远不会这样做。计算机可能会保持在 100%。

我可以在应用程序中执行此操作吗?我见过很多关于将应用强制降低到 96 DPI 的问题,但是是否可以将其强制提高到 120 或 144 DPI?

或者也许有不同的更好的方法来实现相同的目标?如果可能的话,我想避免使用大字体构建单独的“演示模式”界面。

最佳答案

由于要在 Windows 窗体中正确使用 DPI,我们最终选择了一条更简单的途径:更改窗体的字体。

如果所有控件都设置为按字体自动缩放(这是它们的默认设置),您可以在每个表单的基础上覆盖系统字体。

this.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));

有些控件不会从表单的字体中提取出来,必须单独设置,例如菜单条。

menuStrip1.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));

我们将表单的字体大小更改为 14,将菜单的字体大小更改为 15 以提高可读性,并将它们更改回原始值以返回标准模式。

请注意,正如一些控件默认会忽略表单字体一样,如果您手动配置它们的字体(例如将文本设置为粗体或斜体等),许多(如果不是全部)控件可以并且将会忽略它。每个实例都需要单独处理。

关于c# - 我可以提高 Windows 窗体的分辨率/DPI 吗? (一些扩大控制的方法?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22635113/

相关文章:

javascript - 在表单上显示系统日期,jquery/javascript

css - 如何在单击“发送”后未选中时在必需的单选按钮周围创建一个红色框以显示它?

angular - 为什么我得到这些错误 "No value accessor for form control with path: ' rowDetails -> 0 -> no'”

c# - Visual Studio : GlobalSuppressions. cs:前缀 ~P:用于 SuppressMessage 中的属性目标

c# - MySQL ADO.Net 嵌套数据读取器

c# - 是否有在现有模板中添加 css 模板的解决方案?

c# - 捕获应用程序退出事件 - WinForms

c# - Uri 中允许的域/子域

c# - TreeView : Change Plus Minus icon

c# - 在将 Thread.Sleep 与 pictureBox 一起使用时,Winform 卡住