禁用WinForm调用WPF控件时在高DPI下自动缩放

这篇具有很好参考价值的文章主要介绍了禁用WinForm调用WPF控件时在高DPI下自动缩放。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

禁用 WPF应用程序自动感知 DPI

在项目的Assemblyinfo.cs文件里插入一个参数

[assembly: System.Windows.Media.DisableDpiAwareness]

为进程设置默认 DPI 感知 

方法一:通过程序清单进行设置

自 Visual Studio 2015 起,此设置已存在于 中app.manifest,只需取消注释即可。

<!-- 指示该应用程序可感知 DPI 且 Windows 在 DPI 较高时将不会对其进行
       自动缩放。Windows Presentation Foundation (WPF)应用程序自动感知 DPI,无需
       选择加入。选择加入此设置的 Windows 窗体应用程序(面向 .NET Framework 4.6)还应
       在其 app.config 中将 "EnableWindowsFormsHighDpiAutoResizing" 设置设置为 "true"。
       
       将应用程序设为感知长路径。请参阅 https://docs.microsoft.com/windows/win32/fileio/maximum-file-path-limitation -->
  <application xmlns="urn:schemas-microsoft-com:asm.v3">
    <windowsSettings>
      <dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true</dpiAware>
      <longPathAware xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">true</longPathAware>
    </windowsSettings>
  </application>

方法二:以编程方式设置默认感知

在进程中创建 HWND 窗口后,不再支持更改 DPI 感知模式。 如果要以编程方式设置进程默认 DPI 感知模式,则必须在创建任何 HWND 之前调用相应的 API。

Windows 7
SetProcessDPIAware

[DllImport("user32.dll", SetLastError=true)]
static extern bool SetProcessDPIAware();

Windows 8.1
SetProcessDpiAwareness 

[DllImport("shcore.dll")]
static extern int SetProcessDpiAwareness(ProcessDPIAwareness value);

enum ProcessDPIAwareness
{
    DPI_Unaware = 0,
    System_DPI_Aware = 1,
    Per_Monitor_DPI_Aware = 2
}

Windows 10 版本 1703
SetProcessDpiAwarenessContext()
(选择每显示器 DPI 感知时,请使用Context_PerMonitorAwareV2

另请参阅:混合模式 DPI 缩放和 DPI 感知 API - MSDN文章来源地址https://www.toymoban.com/news/detail-442499.html

到了这里,关于禁用WinForm调用WPF控件时在高DPI下自动缩放的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 使用DevExpress22.X(Patch)控件库在VisualStudio2022使用C#进行Winform、WPF应用的开发,看这一篇就够了!

            写在开头,Dev Express是个十分强大的控件库(下文简称Dev),但碍于其高昂的使用费用,“出于学习目的”,我们一般使用的都是Patch版本(在版权意识日趋加强的当下,不要提那两个字,现在加上那些字,百度都搜不出内容)。         最重要的 Patch资源 (包括

    2024年02月09日
    浏览(81)
  • C# winform usercontrol控件跟随主窗体实现自动大小

    usercontrol控件跟随主窗体实现自动大小 今天是跟着哗哩哗哩大学学习C的第N天,但是是学习usercontrol的第一天。 第一天遇到的问题就是如何将usercontrol的大小跟随主窗体的一起变大变小。视频中教得很详细,首先是将usercontrol控件实例化,接着就是设置usercontrol的dock属性为fil

    2024年02月12日
    浏览(44)
  • WPF 在控件上预留一个占位给到调用方使用

    WPF 在控件上预留一个占位给到调用方使用,首先创建一个自定义控件,并在其中包含一个可用于承载外部内容的容器。 在后台配置一个依赖属性PromptContent用于绑定 使用时,您可以将 PlaceholderControl 放置在您的 WPF 窗口或页面中,并使用 ContentPlaceholder 属性来设置外部内容。例

    2024年02月20日
    浏览(34)
  • SpringSecurity登录时在哪里调用我们自定义的UserDetailsServiceImpl

    SpringSecurity登录时在哪里调用我们自定义的UserDetailsServiceImpl 1、请求login方法 2、将用户的用户名和密码封装成一个对象,以便进行后续的认证操作 3、执行认证操作 4、调用providermanager类的authenticate 5.进入这一步就开始跟我们自定义实现的UserDetailsServiceImpl有联系 6、这个类的实

    2024年04月16日
    浏览(29)
  • 手把手教会 VS2022 设计 Winform 高DPI兼容程序 (net461 net6.0 双出)

    C# Winform高DPI字体模糊. 高DPI下(缩放100%), UI设计器一直提示缩放到100%, 如果不重启到100%,设计的控件会乱飞. 新建.Net Windows窗体应用 (Winform)工程 选择.Net6.0 将窗体尺寸定为 1000 x 1000 , 用于后面检测缩放是否正确 添加一个按钮 , 尺寸定为 150 x 50 添加一个图片框 , 尺寸定为 300 x

    2024年02月07日
    浏览(43)
  • uniapp打包app,调用相机功能时在真机调试可以,打包成app之后不行

    在打包成app之后报如图所示错误: 解决: 在app模块配置勾选上相机这一项,如图: 这是主要针对上面这个报错的,当然还有一下情况比较类似,就是相机功能在真机调试下可以,打包之后就不行了。我总结了如下几点: 1. 代码中的sourceType要配置为相机和相册: camera为相机

    2024年02月12日
    浏览(50)
  • winform使用SetParent 嵌入excel,打开的excel跟随dpi 25%*125%缩放了两次,目前微软官方没有好的解决方案,为什么

    双重缩放问题在将 Excel 嵌入到 WinForm 中时确实可能会出现,这是因为两个不同的应用程序(WinForm 和 Excel)之间的 DPI 缩放逻辑不一致,导致双重缩放的结果。 在 Windows 操作系统中,DPI 缩放是一种全局的设置,用于适应高 DPI 显示设备,从而提高显示元素的大小。当您将 Ex

    2024年02月14日
    浏览(46)
  • Verilator的DPI-C机制:实现跨平台的函数调用

    笔者正在搞ysyx,需要用到Verilator的DPI-C机制。虽然STFM比较容易学会,但本着学习和记录的目的,还是写一篇文章出来。 DPI-C机制,简单来说就是你可以在C语言中实现一个函数,却在Verilog中调用!在验证的过程中无疑会有很大的助力!   下面来个例子吧: 比如我需要在.v中调

    2024年02月06日
    浏览(89)
  • 界面控件DevExpress WinForm——属于WinForm组件的MVVM框架

    DevExpress WinForm拥有180+组件和UI库,能为 Windows Forms 平台创建具有影响力的业务解决方案。 DevExpress WinForm 能完美构建流畅、美观且易于使用的应用程序,无论是Office风格的界面,还是分析处理大批量的业务数据,它都能轻松胜任! 注意 :DevExpress WinForm v22.2已经正式发布,新版

    2023年04月09日
    浏览(44)
  • C# WinForm —— 06 常用控件

    公共控件 功能 Label 标签,UI上的提示性文字 TextBox 文本框 RadioButton 单选按钮 CheckBox 复选框 ComboBox 下拉框,只能选择一个选项 CheckedListBox 带复选框的列表项,可以选择多个选项的下拉菜单 DateTimePicker 日期时间选择控件 ListBox 列表框 ListView 以五种不同视图显示项的集合 Mask

    2024年04月10日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包