关于DuiLib高DPI适配问题

在某些情况下,虽然在高DPI的设置下DuiLib能正常的缩放,但是缩放后的显示效果很不好,文字图片显示模糊,影响用户体验,经过多次试验,解决办法如下:
在工程文件设置中,对相应工程做属性设置:


在工程->属性->清单工具->输入和输出->附加清单文件,在此配置项中选择相应的清单文件,清单文件内容如下:



      
    
        
            
        
    
      
    
        
            
                
            
        
    
    
    
        
            true
        
    
    
       
           
               
              
              
              
              
               
              
              
              
              
           
      

其中requestedExecutionLevel 对应 工程->属性->连接器->清单文件->UAC执行级别,这两项需要相同,不然链接不通过;
dpiAware对应是否自动适配DPI,true为自动适配。


以上配置设置完成后,在代码中,需要对每个单独的窗体(WindowImplBase)设置相应的DPI,代码如下:
m_pm.SetDPI(CDPI::GetMainMonitorDPI());


关于图片资源的配置,在高DPI设置下,DuiLib会自动加载相应DPI缩放比例的图片资源,如:normalimage=“file=‘image\login_normal.png’”,在150缩放比的DPI设置下,资源自动加载image\[email protected],如果资源中没有该文件,则资源无法正常加载,显示为空白。ui文件(xml)无需做额外修改,只需在资源文件中放入相应命名规则的文件即可


在高DPI情况下,带有衍生窗体的控件(如combo),在xml中不能指定衍生窗体的大小。
比如,如果设置了combo控件的dropboxsize,则在计算下拉框大小时,会直接使用该大小,而略去高DPI的缩放,导致下拉框大小显示错误

你可能感兴趣的:(关于DuiLib高DPI适配问题)