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);
桂棹兮兰桨,击空明兮溯流光。