c# - 如何使自动 DPI 缩放适用于未使用 InitializeComponent(); 构建的表单?
问题描述
这是this的后续问题,但我将在此处包含所有必要的信息。我想知道是否有一种方法可以为更高的 DPI 设置自动扩展应用程序,事实证明确实存在。我目前通过添加 app.manifest 并激活有关 DPI 感知的注释部分来实现这一点,但我也通过程序主方法中的 SetProcessDPIAware() 完成了此操作,产生了相同的结果。
当我使用 Visual Studio 的表单设计器构建表单时,当我以 125% 的缩放设置运行程序时,整个表单都会按比例放大。但是,当我使用Label xinputtext = new Label { Location = new Point(15, 20)}
表单的类和Controls.Add(xinputtext)
表单的构造方法中的行组合构建表单时,只有文本被放大,没有任何控件。
如何在不使用 Designer 的情况下设计受自动 DPI 缩放影响的表单?
根据要求,这是一个演示:
namespace Just_testing
{
public partial class Form1 : Form
{
public Form1()
{
Controls.Add(button1);
Controls.Add(button2);
}
Button button1 = new Button { Location = new Point(13, 13), Text = "button1" };
Button button2 = new Button { Location = new Point(13, 35), Text = "button2" };
}
}
将 Windows 的显示比例设置为 100% 时,屏幕左上角显示如下:
将 Windows 的显示比例设置为 150% 时,显示如下:
当我使用设计器而不是代码来放置这些控件时,将 Windows 的显示比例设置为 150%,它显示如下:这就是我想要的。请注意,问题不在于第二张图像中的文本太大:文本正确缩放,但我希望按钮和其他所有内容(当然包括位置)也随之缩放。如果您使用设计器构建控件,就会发生这种情况。
解决方案
推荐阅读
- javascript - 将 OpenLayers 从 4.6.5 升级到 5.3.0 后不显示 TileWMS
- python-3.x - 如何在多个子目录中创建具有系列灰度图像的 4 维 ndarray
- javascript - 上传的视频无法使用 html 视频标签播放
- python - 如何在图像前面显示标签文本?
- javascript - Lodash forEach 对对象数组的迭代不正确
- regex - 需要匹配从 3.10.1.0 开始的每个软件版本以及所有后续版本编号的 Perl 正则表达式
- r - r - 使用 xml2 从 xml 文件中提取节点,同时保持节点的原始序列
- c# - Unity - Dock an editor window above the game view
- scala - Scalaj 数据 Urlencode
- presto - presto + 如何调整 task.concurrency