簡體   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