Any*_*ope 6 c# wpf highdpi winforms .net-4.6
我有一个使用winforms和WPF的C#程序,我很难让它在高DPI环境中工作.目前,如果我从解决方案中删除所有WPF项目并运行它,它将可以很好地扩展,但是一旦我添加任何wpf(功能必需),扩展失败并且UI变得不可用.
这似乎与之前的SO问题完全相同:混合WinForms和WPF应用程序中的.Net 3.5中的DPI缩放以及使用DPI正确扩展WinForms的问题
我按照有关这些问题的建议,尝试添加清单文件和提供的dpi识别代码.
我还将项目升级到.net framework 4.6.1(从4.0开始)并包含了app.config设置: <add key="EnableWindowsFormsHighDpiAutoResizing" value="true" />
这确实影响了程序的主shell(因此,不是在一个小窗口中加载所有控件被压缩,主程序窗口打开最大化并显示正常)但是,当我从主窗口输入任何winforms子窗体或插件时,缩放失败.
当我输入任何WPF子窗体或插件,或返回到主屏幕时,这些渲染正确.只有winforms功能无法正确扩展.
有没有人对如何让混合winforms/WPF项目在高DPI中正确扩展有任何想法?
提前致谢
将WPF加载到项目中时,它会将进程升级为System DPI Aware.为了解决这个问题,首先:1)在条目汇编中的名称空间声明上方设置[assembly:DisableDpiAwareness]属性 2)您可以在项目中添加app.manifest文件并添加以下内容:
<asmv3:windowsSettings
xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">
<dpiAware>true/PM</dpiAware>
</asmv3:windowsSettings>
Run Code Online (Sandbox Code Playgroud)
这应该使您的WinForms和WPF内容都在正确的目标DPI.(但如果您使用不同的DPI进行多显示器设置,则无法进行缩放).
归档时间: |
|
查看次数: |
2900 次 |
最近记录: |