禁用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日
    浏览(93)
  • C# winform usercontrol控件跟随主窗体实现自动大小

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

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

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

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

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

    2024年04月16日
    浏览(30)
  • 手把手教会 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日
    浏览(44)
  • 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日
    浏览(50)
  • Verilator的DPI-C机制:实现跨平台的函数调用

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

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

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

    2023年04月09日
    浏览(48)
  • C# Winform Label 控件

    目录 一、概述 二、基本用法 1.控件内容显示 2.控件的外观 3.自定义控件的大小 4.控件的内边距  5.设置文本的固定位置 6.控件的事件 结束 Label 控件是 winform 开发中最常用的一个控件,一般用做显示文本,也有时用做打开链接等操作。 新建一个 winform 项目,点击 form1 界面,

    2024年02月09日
    浏览(47)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包