首页 > 编程语言 >c# winform 高 dpi 自适应开发步骤

c# winform 高 dpi 自适应开发步骤

时间:2024-10-12 13:49:57浏览次数:10  
标签:LogicalToDeviceUnits c# DpiHelper Windows DPI Microsoft dpi winform

1. 在不启用 dpi aware 模式下开发

2. 启动 dpi aware

3. 对有问题的控件使用 DpiHelper 对定位和大小或者图像进行转换

参见 解决 DPI 问题 - Visual Studio (Windows) | Microsoft Learn


部分官方示例:

若要从将在 Visual Studio 环境中运行的托管代码访问 DPI 帮助程序函数,请执行以下操作:

1. 使用的项目必须引用最新版本的 Shell MPF。 例如:

<Reference Include="Microsoft.VisualStudio.Shell.14.0.dll" />

2. 确保项目具有对 System.Windows.Forms、 PresentationCore 和 PresentationUI 的引用。

3. 在代码中 ,使用 Microsoft.VisualStudio.PlatformUI 命名空间并调用 DpiHelper 类的静态函数。 对于受支持的类型(点、大小、矩形等),提供了返回新缩放对象的扩展函数。 例如:

using Microsoft.VisualStudio.PlatformUI;
double x = DpiHelper.LogicalToDeviceUnitsX(posX);
Point ptScaled = ptOriginal.LogicalToDeviceUnits();
DpiHelper.LogicalToDeviceUnits(ref bitmap);

 

标签:LogicalToDeviceUnits,c#,DpiHelper,Windows,DPI,Microsoft,dpi,winform
From: https://www.cnblogs.com/nanfei/p/18460384

相关文章

  • AWS GenAI LLM Chatbot: 多模型多RAG驱动的聊天机器人解决方案
    aws-genai-llm-chatbotAWSGenAILLMChatbot:打造智能对话新体验在人工智能和自然语言处理技术快速发展的今天,聊天机器人已成为企业与用户交互的重要工具。AWSGenAILLMChatbot项目应运而生,为开发者提供了一个强大而灵活的解决方案,用于在AWS云平台上部署先进的AI驱动聊天......
  • ✪宁波CE认证:✪铸就品质,✪拓展国际版图✪
    ✪宁波CE认证:✪铸就品质,✪拓展国际版图✪......
  • R星平台新下载游戏出现“找不到VCRUNTIME140.dll无法执行代码”的原因解析
    当玩家在R星(RockstarGames)平台新下载并尝试运行游戏时,如果遇到“找不到VCRUNTIME140.dll无法执行代码”的错误提示,这通常意味着系统中缺少必要的动态链接库文件VCRUNTIME140.dll。以下是对该问题的详细原因解析:一、VCRUNTIME140.dll文件的重要性VCRUNTIME140.dll是Microsof......
  • 在K8S中,PodSecurityPolicy机制能实现哪些安全策略?
    在Kubernetes中,PodSecurityPolicy(PSP)是一种集群级别的资源对象,用于控制Pod如何运行,并确保其符合一定的安全要求。虽然PSP已经在Kubernetes1.21版本中被标记为弃用,并将在未来的版本中被移除,但在支持它的环境中,PSP可以实现多种安全策略。以下是一些PSP可以实现的安全策略示例:用......
  • YOLO11改进|SPPF篇|引入FocalModulation特征金字塔
    目录一、【FocalModulation】特征金字塔1.1【FocalModulation】特征金字塔介绍1.2【FocalModulation】核心代码二、添加【FocalModulation】特征金字塔2.1STEP12.2STEP22.3STEP32.4STEP4三、yaml文件与运行3.1yaml文件3.2运行成功截图一、【FocalModulation】特......
  • OptiTrack与Xsens光、惯动捕中用于动画制作的尖端设备对比
    随着动画、电影、游戏等数字内容行业的迅速发展,捕捉演员的动作并将其转化为虚拟角色的技术越来越受到重视。两种主要的动作捕捉技术——光学捕捉系统和惯性动作捕捉系统——代表了当前市场的最前沿。本文将对比两种技术的代表性设备:OptiTrack的光学动作捕捉系统和Xsens的惯性动......
  • C++ 中 `const` 的用法
    C++中const的用法1.在成员函数中的const示例:voidprintWindow()const{//...}含义和特性:函数不会修改对象状态:声明为const的成员函数承诺不会修改该类的任何非const成员变量。可以被常量对象调用:const成员函数可以被常量对象调用,确......
  • ThreadLocal和连接池
    ThreadLocal线程隔离工具用来存储一些只有线程才可以访问的内容。你可能会想,既然我只想本线程才能访问,那么我使用局部变量不就行了吗?局部变量的问题在于它只能存在于本方法内部,没有办法让本线程内的其他方法访问使用。publicstaticvoidmain(String[]args){Run......
  • C语言 队列例程
    队列的数据成员为结构体或数组#include<stdio.h>#include<stdlib.h>#include<assert.h>typedefstructnodeArr{ intdat[2]; structnodeArr*next;}NodeArr;NodeArr*initQueueAr();intis_emeptyAr(NodeArr*Q);voidenQueueAr(NodeArr*Q,int*arr);......
  • AC自动机学习
    左程云讲解102加了fail指针的前缀树通过在前缀树上构建fail指针,如下图,abcda,abcdb,bcdc如果我要查询的是abcdcdc先顺着1234号结点向下,abcdc,遇到最后的c时当前串上找不到了,通过fail跳到bcdc串上,因为abcd后缀和bcdc前缀重合,这么跳能减少重新匹配的成本相当于对于要查询的串,我先从......