c# winform 高 dpi 自适应开发步骤

1. 在不启用 dpi aware 模式下开发

2. 启动 dpi aware

3. 对有问题的控件使用 DpiHelper 对定位和大小或者图像进行转换

参见 解决 DPI 问题 - Visual Studio (Windows) | Microsoft Learn


部分官方示例:

若要从将在 Visual Studio 环境中运行的托管代码访问 DPI 帮助程序函数,请执行以下操作:

1. 使用的项目必须引用最新版本的 Shell MPF。 例如:

<Reference Include="Microsoft.VisualStudio.Shell.14.0.dll" />

2. 确保项目具有对 System.Windows.Forms、 PresentationCore 和 PresentationUI 的引用。

3. 在代码中 ,使用 Microsoft.VisualStudio.PlatformUI 命名空间并调用 DpiHelper 类的静态函数。 对于受支持的类型(点、大小、矩形等),提供了返回新缩放对象的扩展函数。 例如:

using Microsoft.VisualStudio.PlatformUI;
double x = DpiHelper.LogicalToDeviceUnitsX(posX);
Point ptScaled = ptOriginal.LogicalToDeviceUnits();
DpiHelper.LogicalToDeviceUnits(ref bitmap);

 

posted on 2024-10-12 13:52  空明流光  阅读(88)  评论(0编辑  收藏  举报

导航