我正在使用C#开发一个Windows Forms应用程序,用于办公室。迄今为止,通过锚定和自适应大小,控件在默认表单大小、最大化等方面都能很好地布局。
但是,在会议室中,在大型投影屏幕上,该窗体看起来并不好看。文本太小了,难以轻松阅读。
我们的机器上运行Windows 7,因此我尝试将显示渲染从100%提高到150%。这使得控件上的文本模糊不清,因此我进行了一些研究,然后将以下内容添加到我的Main()方法中。
这个方案效果非常好——应用程序可以自适应,控件也很大且易读,而且一切都能够良好地布局。唯一的问题是更改显示渲染会强制您注销,这很不方便,现实情况下我们的用户永远不会这么做。计算机可能会保持在100%。
但是,在会议室中,在大型投影屏幕上,该窗体看起来并不好看。文本太小了,难以轻松阅读。
我们的机器上运行Windows 7,因此我尝试将显示渲染从100%提高到150%。这使得控件上的文本模糊不清,因此我进行了一些研究,然后将以下内容添加到我的Main()方法中。
[System.Runtime.InteropServices.DllImport("user32.dll")]
private static extern bool SetProcessDPIAware;
这个方案效果非常好——应用程序可以自适应,控件也很大且易读,而且一切都能够良好地布局。唯一的问题是更改显示渲染会强制您注销,这很不方便,现实情况下我们的用户永远不会这么做。计算机可能会保持在100%。
我能否在应用程序内部完成此操作?我看到了很多关于将应用程序强制降至96 DPI的问题,但是否可能将其强制升至120或144 DPI呢?
或者,也许有一种不同且更好的方式来实现相同的目标?如果可能的话,我想避免构建单独的“演示模式”界面与大字体。
this.SuspendLayout();
this.AutoScaleDimensions = new System.Drawing.SizeF(72F, 72F);
this.Font = new System.Drawing.Font("Microsoft Sans Serif", 14F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.PerformAutoScale();
- ohioDeveloper