繁体   English   中英

更改c#中的“覆盖高DPI缩放行为”

[英]Change “Override high DPI scaling behavior” in c#

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

在此输入图像描述

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

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

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

HKEY_CURRENT_USER\­Software\­Microsoft\­Windows NT\­CurrentVersion\­AppCompatFlags\­Layers

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

代码示例:

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

阅读更多: Windows中的高DPI设置


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

DPI感知应用程序不受操作系统的影响。 这些应用程序使其自身适合屏幕的实际DPI并提供更好的视觉体验。

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

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

其他资源:

  1. 高DPI支持

  2. Windows上的高DPI桌面应用程序开发 (也是应用程序清单

  3. DPI意识 - 在一个版本中不知道,在其他版本中意识到系统[重复]

  4. 编写高DPI感知Windows应用程序

  5. 编写DPI感知桌面和Win32应用程序

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM