c# - 为什么通过 cpp 项目打开时 C# winform 显示的 DPI 150% 不同
问题描述
通过 DPI 150% 的 cpp 项目打开 C# 应用程序时,我在 Windows 窗体中遇到问题。
问题是控件的截断形式和控件大小未按原样显示。例如,按钮大小为 23 像素,但显示为 14 像素。
在 4K 显示器中通过 C# 项目打开相同的 C# 应用程序时,我没有遇到此问题。控件尺寸也变得合适。
任何人都可以请建议将是什么问题以及如何解决它。
谢谢,拉杰什。
解决方案
我猜你正在使用 WinForms,它在 HiDpi 缩放方面存在一些问题。如果默认情况下您仅将应用程序作为您自己的项目启动,则它被标记为DPI Unaware。这意味着应用程序可能看起来像素化不是 100%,但布局还可以。
不幸的是,要创建一个支持 hi dpi 的 WinForm 应用程序并不容易。
但是,当在系统的另一部分设置 DPI 模式的较大项目的一部分中使用您的组件时,这可能会导致布局问题。
如果它是一个 .NET 项目,您可以通过添加以下程序集属性来解决此问题:
[assembly: System.Windows.Media.DisableDpiAwareness]
我希望这有帮助。
推荐阅读
- java - Android 应用没有互联网连接 - 无需权限
- android - QoS=1 与 MqttAsyncClient 订阅未命中消息
- python - 多处理并非在所有 CPU 内核上运行
- javascript - 刷新 div 后 CSS 样式不起作用
- c# - Asp.net Core 2.1 日志记录
- javascript - 如何在电子 js 中创建模态?(javascript、html、css)
- laravel - 当我在 laravel 中更改与 auth 链接的默认表“用户”时,它会导致我的 API 出现未经授权的结果,
- azure - 如何使用构建管道部署 Azure 数据工厂资源?
- python - import pystan._api failed:ImportError: DLL load failed: 找不到指定的模块
- python - Maya Python // 错误:没有对象匹配名称,For 循环的结果