今天下午講的一節Webcast中重點介紹了High DPI,關於這個內容由於虛機中不支持 DPI Aware的原因,沒有做成Demo,現在給大家一個教程,希望對大家在的程序支持 Windows 7系統有所幫助:
1.創建一個托管應用程序(VB.NET或C#皆可,我這裡用C#做一個例子):
2.右擊選擇項目並添加一個app.manifest文件:
3.使用下面的代碼覆蓋該文件:
<?xml version="1.0" encoding="utf-8"?>
<asmv1:assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft- com:asm.v1" xmlns:asmv1="urn:schemas-microsoft-com:asm.v1" xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance%22>
<assemblyIdentity version="1.0.0.0" name="MyApplication.app"/>
<asmv3:application xmlns:asmv3="urn:schemas-microsoft- com:asm.v3">
<asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings%22>
<dpiAware>true</dpiAware>
</asmv3:windowsSettings>
</asmv3:application>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
<security>
<requestedPrivileges xmlns="urn:schemas-microsoft- com:asm.v3">
<!-- UAC Manifest Options
If you want to change the Windows User Account Control level replace the
requestedExecutionLevel node with one of the following.
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
<requestedExecutionLevel level="highestAvailable" uiAccess="false" />
If you want to utilize File and Registry Virtualization for backward
compatibility then delete the requestedExecutionLevel node.
-->
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
</requestedPrivileges>
</security>
</trustInfo>
</asmv1:assembly>
4.在Form1窗體上添加一些ToolBox的按鈕:
5.再創建一個項目:
6.不要添加Manifest,直接在Form1上添加幾個Toolbox的按鈕:
7.將解決方案編譯好:
8.在桌面屬性選擇Display:
9.選擇DPI為150%:
10.登出系統再登錄就可以應用該設置:
11.打開剛才編譯好的兩個應用程序就可以看到不同了:
兩個程序哪個是DPI Aware的呢,大家可以猜猜,好,本文就到此,感謝!