在通过cpp项目打开时,为什么显示的C#Winform与DPI 150%不同

时间:2019-02-27 14:12:08

标签: c# c++

在通过DPI 150%的cpp项目打开C#应用程序时,我遇到了Windows窗体问题。

问题是控件以截断的形式出现,并且控件的大小没有按原样显示。例如,按钮大小为23像素,但显示为14像素。

通过4K监视器中的C#项目打开相同的C#应用​​程序时,我没有遇到此问题。控件的大小也正变得合适。

任何人都可以提出问题的根源和解决方法的建议。

谢谢, 拉杰什。

1 个答案:

答案 0 :(得分:-1)

我猜想您正在使用WinForms,它在HiDpi缩放方面存在一些问题。如果默认情况下仅将应用程序作为自己的项目启动,则将其标记为 DPI不识别。这意味着应用程序看起来可能不是100%像素化,但布局还可以。

要创建启用了dpi的WinForm应用程序,不幸的是并非如此简单。

https://docs.microsoft.com/en-us/windows/desktop/hidpi/high-dpi-desktop-application-development-on-windows

但是,在较大的项目的某些部分(系统的另一部分设置了DPI模式)中使用组件时,这可能会导致问题。

如果它是.NET项目,则可以通过添加以下程序集属性来解决此问题:

[assembly: System.Windows.Media.DisableDpiAwareness]

我希望这会有所帮助。