在c#中更改"覆盖高DPI缩放行为"

Mik*_*e_G 10 c# registry dpi cefsharp

我们在WinForm(CefSharp控件)中有一个控件,当用户屏幕在Windows上设置为125%时,它会受到图形工件的影响.它不仅仅是控制,独立Chrome在某种程度上做到了.我们能够修复工件的唯一方法是更改​​下图所示的exe设置.有没有办法在代码中更改它?

在此输入图像描述

编辑:这不是重复.制作应用程序DPI意识与DPI缩放不一样

abb*_*een 8

方式 1. 如何使用注册表覆盖高 DPI 缩放(选中复选框)

\n\n

启动注册表编辑器并导航到此键:

\n\n
HKEY_CURRENT_USER\\\xc2\xadSoftware\\\xc2\xadMicrosoft\\\xc2\xadWindows NT\\\xc2\xadCurrentVersion\\\xc2\xadAppCompatFlags\\\xc2\xadLayers\n
Run Code Online (Sandbox Code Playgroud)\n\n

现在添加一个字符串值 (REG_SZ),其名称是应用程序可执行文件的完整路径,其值为 HIGHDPIAWARE

\n\n

代码示例:

\n\n
string appPath = string.Format(@"{0}\\{1}.exe", My.Application.Info.DirectoryPath, My.Application.Info.AssemblyName);       \nMy.Computer.Registry.SetValue(@"HKEY_CURRENT_USER\\Software\\Microsoft\\Windows NT\\CurrentVersion\\AppCompatFlags\\Layers", appPath, "HIGHDPIAWARE");\n
Run Code Online (Sandbox Code Playgroud)\n\n

了解更多: Windows 中的高 DPI 设置

\n\n
\n\n

方式 2. 如何在程序集清单中更改 DPI 感知?

\n\n
\n

DPI 感知应用程序不受操作系统影响。此类应用程序会自行渲染以适应屏幕的实际 DPI,并提供更好的视觉体验。

\n
\n\n

<dpiAware>元素添加到清单代码并将其值设置为true

\n\n
<?xml version="1.0" encoding="utf-8"?>\n<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3" >\n    <assemblyIdentity version="1.0.0.0" name="MyApplication.app"/>\n    <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">\n        <security>\n            <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">\n                <requestedExecutionLevel level="asInvoker" uiAccess="false" />\n            </requestedPrivileges>\n        </security>\n    </trustInfo>\n    <asmv3:application>\n        <asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">\n             <dpiAware>true</dpiAware> \n        </asmv3:windowsSettings>\n    </asmv3:application>\n</assembly>\n
Run Code Online (Sandbox Code Playgroud)\n\n

其他资源:

\n\n
    \n
  1. 高 DPI 支持

  2. \n
  3. Windows 上的高 DPI 桌面应用程序开发(也称为应用程序清单

  4. \n
  5. DPI 感知 - 在一个版本中不感知,在另一个版本中感知系统 [重复]

  6. \n
  7. 编写高 DPI 感知的 Windows 应用程序

  8. \n
  9. 编写 DPI 感知的桌面和 Win32 应用程序

  10. \n
\n

  • 有用!!!这是我为了达到我的情况所需的效果而进行的更改: &lt;dpiAware&gt;true/system&lt;/dpiAware&gt; 非常感谢!当系统允许时,我将在三个小时后授予赏金。 (2认同)