当前位置: 首页 > news >正文

winform panel中放置 usercontrol ,设置usercontrol随着dpi分辨率变化

在 WinForms 中,如果要使 UserControl 随着 DPI 分辨率的变化而自适应调整大小,可以遵循以下步骤:

  1. 使用 Anchor 和 Dock 属性:在 UserControl 中的控件布局时,使用 Anchor 和 Dock 属性来适应父控件的大小变化。

  2. 处理 DPI 变化事件:在 UserControl 中订阅系统 DPI 变化事件,并在事件处理程序中重新计算控件的大小和位置。

下面是一个简单的示例代码,演示了如何实现这些步骤:

using System;
using System.Drawing;
using System.Windows.Forms;public class DPIAwareUserControl : UserControl
{public DPIAwareUserControl(){// 订阅系统 DPI 变化事件SystemEvents.DisplaySettingsChanged += SystemEvents_DisplaySettingsChanged;}// 处理 DPI 变化事件private void SystemEvents_DisplaySettingsChanged(object sender, EventArgs e){// 在 DPI 变化时重新计算控件大小和位置UpdateControlSizeAndPosition();}protected override void OnLoad(EventArgs e){base.OnLoad(e);// 初始化时,设置控件的初始大小和位置UpdateControlSizeAndPosition();}private void UpdateControlSizeAndPosition(){// 获取当前 DPI 缩放比例float dpiScale = GetCurrentDPIScale();// 设置控件的新大小和位置int newWidth = (int)Math.Round(100 * dpiScale); // 以 100 为基准大小进行缩放int newHeight = (int)Math.Round(50 * dpiScale);  // 以 50 为基准大小进行缩放// 设置控件大小this.Size = new Size(newWidth, newHeight);// 可以使用 Anchor 和 Dock 属性来调整控件中的子控件布局,使其适应新的大小// Example: this.myChildControl.Anchor = AnchorStyles.Top | AnchorStyles.Left;}private float GetCurrentDPIScale(){using (Graphics graphics = this.CreateGraphics()){// 获取当前 DPI 缩放比例float dpiX = graphics.DpiX;float dpiY = graphics.DpiY;// 假设 X 和 Y 方向的 DPI 缩放比例一致(通常情况下都是这样的)return dpiX / 96.0f; // 96 DPI 是标准的 100% 缩放比例}}protected override void Dispose(bool disposing){if (disposing){// 在销毁控件时取消订阅 DPI 变化事件SystemEvents.DisplaySettingsChanged -= SystemEvents_DisplaySettingsChanged;}base.Dispose(disposing);}
}

请注意,该示例中只是简单地根据 DPI 缩放比例调整了 UserControl 的大小,你可以根据具体的布局和需求进一步调整和优化代码。在实际应用中,还需要考虑控件内部布局和控件的子控件等因素。同时,不同版本的 .NET Framework 和 Windows 版本可能对 DPI 自适应有不同的处理方式,因此建议在实际应用中进行全面的测试。

      private void UC_Ct_Load(object sender, EventArgs e){if (Tool.GetSreenScale() >= 1.5){//取消this.btnCancel.BorderRadius = 3;this.panelCancel.Height = 28;this.btnCancel.Height = 26;this.btnCancel.Location = new System.Drawing.Point(0, 0);
}}

相关文章:

winform panel中放置 usercontrol ,设置usercontrol随着dpi分辨率变化

在 WinForms 中,如果要使 UserControl 随着 DPI 分辨率的变化而自适应调整大小,可以遵循以下步骤: 使用 Anchor 和 Dock 属性:在 UserControl 中的控件布局时,使用 Anchor 和 Dock 属性来适应父控件的大小变化。 处理…...

更新页面无法回显

需求与问题: 在菜品管理开发中,我需要修改菜品,第一步是回显页面,但在我再三确认代码无误的情况下依旧无法回显内容 问题发现与解决: 经过排查,我发现我的DishDTO内容如下: Data public clas…...

CS 144 Lab Four -- the TCP connection

CS 144 Lab Four -- the TCP connection TCPConnection 简述TCP 状态图代码实现完整流程追踪 测试 对应课程视频: 【计算机网络】 斯坦福大学CS144课程 Lab Three 对应的PDF: Lab Checkpoint 4: down the stack (the network interface) TCPConnection 简述 TCPConnection 需…...

在Volo.Abp微服务中使用SignalR

假设需要通过SignalR发送消息通知,并在前端接收消息通知的功能 创建SignalR服务 在项目中引用 abp add-package Volo.Abp.AspNetCore.SignalR在Module文件中添加对模块依赖 [DependsOn(...typeof(AbpAspNetCoreSignalRModule))] public class IdentityApplicati…...

数据可视化(七)常用图表的绘制

1. #seaborn绘制常用图表 #折线图 #replot(x,y,kind,data) #lineplot(x,y,data) #直方图 #displot(data,rug) #条形图 #barplot&…...

【ARM 常见汇编指令学习 8 - dsb sy 指令及 dsb 参数介绍】

文章目录 ARM dsb sy 指令 上篇文章:ARM 常见汇编指令学习 7 - LDR 指令与LDR伪指令及 mov指令 下篇文章:ARM 常见汇编指令学习 9 - 缓存管理指令 DC 与 IC ARM dsb sy 指令 数据同步屏障是一种特殊类型的内存屏障。 只有当DSB指令执行完毕后&#xff…...

YOLOv5本地模型训练报错解决

报错解决 页面文件太小,无法完成操作 训练过程中,发生下图所示的报错,同时pycharm崩溃 1. 更改虚拟内存 进入高级系统设置,应该都会进,就不说过程了 设置虚拟内存大小 2. 减小占用内容大小 新建一个fixNvPe.py程序…...

tomcat p12证书另存为nginx .crt证书和.key私钥

tomcat p12证书另存为nginx .crt证书和.key私钥 Tomcat使用的.pfx或.keystore文件都是私钥及公钥证书一起的,通过pin保证安全;nginx只需要使用.pem或.crt公钥证书文件和.key私钥即可,如果原ssl证书不方便重新下载,在已有tomcat证…...

Docker的userland-proxy

前言 Docker针对端口映射前后有两种方案,一种是1.7版本之前docker-proxyiptables DNAT 的方式;另一种则是1.7版本(及之后)提供的完全由iptables DNAT实现的端口映射。不过在目前docker 1.9.1中,前一种方式依旧是默认方式。但是从Docker 1.7版…...

uniapp封装request请求

在基础文件里面创建一个api文件 在创建两个 js文件 http.js 里面封装 request 请求 let baseUrl https://white.51.toponet.cn; //基地址 export const request (options {}) > {//异步封装接口,使用Promise处理异步请求return new Promise((resolve, reject…...

Go如何构建高效API接口| 青训营

Go语言作为一个高效的静态类型语言,在构建API服务时也表现出了很大的优势。本文将介绍如何使用Go语言构建高效的API服务,帮助开发者更好地应对日益增长的API需求。 一、选择适合的框架 首先,选择适合的框架是构建高效API服务的重要一步。在…...

【云原生K8s】二进制部署单master K8s+etcd集群

一、实验设计 mater节点master01192.168.190.10kube-apiserver kube-controller-manager kube-scheduler etcd node节点node01192.168.190.20kubelet kube-proxy docker (容…...

TRUNC(截取)函数的用法

TRUNC函数在Oracle中用于截断日期、时间或数字的精度。其语法如下: 截取数字: TRUNC(number [, precision])其中: number 表示要截断的数字。 precision表示截断的精度。可以是负数、整数或者默认为空。正数表示保留小数位数,负…...

IELAB-网络工程师的路由答疑10问(1)

各位同学,我相信对于许多新学习的同学而言,在刚接触该的时候总会产生许多问题,今天 我们就简单讲解一下常见的几种问题: 什么是路由? 简单来讲,路由通常发生在网络层,为什么呢?首先…...

OpenLayers入门,OpenLayers加载TopoJson数据,使用行政区划边界作为示例

专栏目录: OpenLayers入门教程汇总目录 前言 本章讲解一下OpenLayers如何加载解析TopoJson格式的数据。 TopoJson介绍 TopoJson是用于表示地理空间数据的格式。是GeoJson格式的改进版,相比 GeoJSON 直接使用 Polygon、Point 之类的几何体来表示图形的方法,TopoJSON 中的…...

【图像去噪】基于原始对偶算法优化的TV-L1模型进行图像去噪研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...

RISC-V基础之函数调用(五)函数递归调用及函数参数数量溢出(超出现有寄存器个数)约定(包含实例)

首先先解释一下栈在函数调用中的作用,更详细的部分请参照考研复习之数据结构笔记(五)栈和队列(上)(包含栈的相关内容)_管二狗赶快去工作!的博客-CSDN博客 函数嵌套调用栈的作用是用…...

力扣:48. 旋转图像(Python3)

题目: 给定一个 n n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。 你必须在 原地 旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。 来源:力扣(LeetCode) 链接&…...

HarmonyOS应用开发者基础与高级认证题库——中级篇

系列文章目录 HarmonyOS应用开发者基础与高级认证题库——基础篇 HarmonyOS应用开发者基础与高级认证题库——中级篇 文章目录 系列文章目录前言一、判断二、单选三、多选 前言 今天刚换了台果子手机就收到了华子鸿蒙开发认证邀请(认证链接)&#xff0…...

Python中实现多个列表、字典、元组、集合的连接

目录 目录 前言 一、列表 1、运算符 2、extend()方法 3、解包操作 * 二、字典 1、update()方法 2、解包操作 ** 三、元组 1、 运算符 2、解包操作 * 四、集合 1、union方法 2、| 运算符 3、解包操作 * 五、不同类…...

dl-librescore用户脚本完全指南:在浏览器中一键下载乐谱

dl-librescore用户脚本完全指南:在浏览器中一键下载乐谱 【免费下载链接】dl-librescore Download sheet music 项目地址: https://gitcode.com/gh_mirrors/dl/dl-librescore dl-librescore是一款强大的用户脚本工具,专为音乐爱好者设计&#xff…...

OpCore Simplify终极指南:5分钟搞定Hackintosh EFI配置,小白也能轻松上手

OpCore Simplify终极指南:5分钟搞定Hackintosh EFI配置,小白也能轻松上手 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify 还在…...

3分钟上手!跨平台串口调试神器SerialPortAssistant终极指南

3分钟上手!跨平台串口调试神器SerialPortAssistant终极指南 【免费下载链接】SerialPortAssistant This project is a cross-platform serial port assistant. It can run on WINDOWS, linux、android、macos system. 项目地址: https://gitcode.com/gh_mirrors/…...

MFC中单选框与复选框控件的实战应用与优化技巧

1. MFC单选框与复选框控件基础入门 第一次接触MFC的单选框(Radio Button)和复选框(CheckBox)时,我完全被它们的组属性搞晕了。记得当时做了个问卷调查界面,结果所有单选框都能同时选中,简直是个灾难现场。后来才发现,原来MFC的单选…...

阿里万物识别镜像:中文图片识别快速部署与使用

阿里万物识别镜像:中文图片识别快速部署与使用 你有没有想过,如果电脑能像人一样“看懂”图片,会是什么样子?不是简单地识别“猫”或“狗”,而是能准确说出“这是一台华为MateBook笔记本电脑”、“那是一杯加了冰块的…...

【SOTA级冷启动优化指南】:基于17个生产环境LLM服务案例,提炼出唯一被验证有效的4阶段渐进式Warmup范式

第一章:大模型工程化中的冷启动优化 2026奇点智能技术大会(https://ml-summit.org) 大模型在首次部署或低流量场景下常面临推理延迟高、显存初始化慢、缓存未预热等“冷启动”瓶颈,直接影响用户体验与服务SLA。冷启动不仅体现为首次请求的毫秒级延迟激增…...

HY-MT1.5-1.8B快速入门:3步搭建你的专属翻译API

HY-MT1.5-1.8B快速入门:3步搭建你的专属翻译API 1. 引言:为什么选择HY-MT1.5-1.8B 1.1 模型核心优势 腾讯混元团队推出的HY-MT1.5-1.8B翻译模型,是一个专为高效机器翻译设计的轻量级解决方案。这个1.8亿参数的模型在保持较小体积的同时&am…...

多租户下的系统业务开发过程探讨俚

一、背景与问题缘起 MySQL 5.6.51 版本下 2000 万行核心业务表开展新增字段操作,需求为新增BIGINT(19) NOT NULL DEFAULT 0 COMMENT 注释(因业务实际需要存储大数值关联字段)。 表的核心特性为Java 多线程密集读写,业务请求持续高…...

Janus-Pro-7B计算机视觉辅助:基于YOLOv8检测结果的智能报告生成

Janus-Pro-7B计算机视觉辅助:基于YOLOv8检测结果的智能报告生成 最近在做一个工业园区的智能巡检项目,客户提了个挺有意思的需求:他们希望摄像头不仅能“看见”设备异常,还能自动“说”出来。简单来说,就是系统识别到…...

彻底告别OpenClaw使用焦虑:我给他装上了“透视眼”和“批量克隆模组贾

指令替换 项目需求:将加法指令替换为减法 项目目录如下 /MyProject ├── CMakeLists.txt # CMake 配置文件 ├── build/ #构建目录 │ └── test.c #测试编译代码 └── mypass2.cpp # pass 项目代码 一,测试代码示例 test.c // test.c #includ…...