【问题标题】:Change "Override high DPI scaling behavior" in c#在 c# 中更改“覆盖高 DPI 缩放行为”
【发布时间】:2017-08-18 15:04:26
【问题描述】:

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

编辑:这不是重复的。因为让应用 DPI 感知与 DPI 缩放重度不同

【问题讨论】:

  • @hans-passant 这不是重复的。因为让应用感知 DPI 与 DPI 缩放重度不同
  • 您是否要强制设备比例因子?以下设置防止浏览器在使用更高DPI时缩放settings.CefCommandLineArgs.Add("force-device-scale-factor", "1");
  • @TEK 感谢您的建议,但问题仍然存在。
  • @Mike_G 你找到解决方案了吗?我遇到了完全相同的问题。
  • @Juan 不,不幸的是我们刚刚开始在 xaml 中构建我们的控件

标签: c# registry dpi cefsharp


【解决方案1】:

方式 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");

阅读全文: High DPI Settings in Windows


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

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

<dpiAware> 元素添加到manifest code 并将其值设置为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. High DPI Support

  2. High DPI Desktop Application Development on Windows(也叫Application Manifests

  3. DPI Awareness - Unaware in one Release, System Aware in the Other [duplicate]

  4. Writing High-DPI Aware Windows Apps

  5. Writing DPI-Aware Desktop and Win32 Applications

【讨论】:

  • 它没有用。 “覆盖高 DPI 缩放行为”复选框仍未选中。
  • asmv3 是目标命名空间的前缀。
  • “覆盖高 DPI 缩放行为”复选框将不会被选中。但效果和checked一样
  • 但是这个复选框正是我想要完成的。
  • 有效!!!这是我为我的情况做出的更改:true/system 非常感谢!在系统允许的情况下,我将在三个多小时后奖励赏金。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-12-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多