为托管应用程序添加DPI Aware支持

简介: 今天下午讲的一节Webcast中重点介绍了High DPI,关于这个内容由于虚机中不支持DPI Aware的原因,没有做成Demo,现在给大家一个教程,希望对大家在的程序支持Windows 7系统有所帮助: 1.

今天下午讲的一节Webcast中重点介绍了High DPI,关于这个内容由于虚机中不支持DPI Aware的原因,没有做成Demo,现在给大家一个教程,希望对大家在的程序支持Windows 7系统有所帮助:

1. 创建一个托管应用程序(VB.NET或C#皆可,我这里用C#做一个例子):

image

image

2. 右击选择项目并添加一个app.manifest文件:

image

image

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的按钮:

image

image

image

5. 再创建一个项目:

image

image

image

6. 不要添加Manifest,直接在Form1上添加几个Toolbox的按钮:

image

7. 将解决方案编译好:

image

8. 在桌面属性选择Display:

image

9. 选择DPI为150%:

image

10. 登出系统再登录就可以应用该设置:

 image

11. 打开刚才编译好的两个应用程序就可以看到不同了:

image

两个程序哪个是DPI Aware的呢,大家可以猜猜,好,本文就到此,感谢!

目录
相关文章
|
7月前
|
安全 BI 开发者
ActiveX控件在Visual Basic中的应用:增强应用程序功能
【4月更文挑战第27天】本文介绍了ActiveX控件在Visual Basic中的应用,这些控件基于COM技术,提供可复用代码模块以增强Windows应用功能。开发者可通过“部件”对话框添加ActiveX控件,如Web浏览器控件,实现与网页交互。尽管ActiveX控件带来优势,但也涉及性能、兼容性、安全性和维护问题。开发者应谨慎选择并确保控件的安全高效使用。未来,尽管有新技术崛起,ActiveX控件仍可在特定场景下发挥作用。
73 1
|
7月前
|
存储 缓存 安全
API在Visual Basic中的应用:连接外部服务与扩展功能
【4月更文挑战第27天】本文探讨了在Visual Basic中使用API连接外部服务和扩展功能的方法,涵盖了API的基本概念、种类及如何使用本地和Web API。通过DllImport调用本地API,利用HttpClient和WebClient与Web API交互,同时强调了第三方API的使用和SOA架构中的API角色。安全性、性能优化和错误处理是实践中的关键点。案例研究和最佳实践有助于开发者更有效地利用API,提升Visual Basic应用程序的功能和灵活性。随着API技术的发展,Visual Basic将持续支持开发者创造更强大的应用。
65 0
|
4月前
|
存储 小程序 物联网
|
4月前
|
开发者 前端开发 Java
构建多租户应用程序:深入探讨Entity Framework Core中的租户支持策略与实现
【8月更文挑战第31天】Vaadin 是一个流行的 Java Web 框架,提供丰富的 UI 组件库,助力开发者快速构建美观且功能强大的 Web 应用。本文深入探讨 Vaadin 组件库,介绍如何基于功能性、可访问性、性能和可定制性选择合适的组件,并提供示例代码,帮助开发者做出明智决策。无论是简单的输入框还是复杂的表格,Vaadin 都能满足各种需求。
51 0
|
4月前
|
API C# 图形学
Unity3D学习笔记4——创建Mesh高级接口
Unity3D学习笔记4——创建Mesh高级接口
43 0
|
安全 算法 Cloud Native
使用阿里云服务网格 ASM 和 Intel Multi-Buffer 技术实现更快的应用服务间加密通信|学习笔记
快速学习使用阿里云服务网格 ASM 和 Intel Multi-Buffer 技术实现更快的应用服务间加密通信
使用阿里云服务网格 ASM 和 Intel Multi-Buffer 技术实现更快的应用服务间加密通信|学习笔记
|
编译器 C语言 C++
QT 应用编程: 应用程序动态发布
QT 应用编程: 应用程序动态发布
192 0
QT 应用编程: 应用程序动态发布
|
移动开发 前端开发 定位技术