简 述: 高分屏、DPIPPI、屏幕分辨率的一些基本知识,以及使用 Qt 处理高分屏的一些方法集合归纳。

文章目录

  • 基础
  • 方案
  • Ref

本文初发于 “偕臧的小站”,同步转载于此。

基础

英寸: inch,复数:inches;缩写为in或″,或 英吋,简作 。1 英寸 = 2.54 厘米(cm)= 25.4 毫米(mm)。

像素: pixel 或 pel,为影像显示的基本单位,可看作一个点或方块(不是距离单位)。每个像素有自己的RGB值,单位面积的像素越多,则表示其分辨率越高。

PPI: 每英寸的像素个数(此处一英寸为对角线长度、且说的是像素密度)。由 分辨率 中X或Y轴的数字除以该轴的长度(英寸),可得该轴的像素每英寸密度。

DPI: 每英寸的点个数(此处一英寸为对角线长度、且说的是打印点密度)。

PPI 通常使用于计算机屏幕,DPI 通常使用于打印机;但是这两者之间通常被混用,需要在具体的上下文去理解其含义。


屏幕尺寸: 指的是一个电子设备的屏幕对角线的长度。

分辨率: 是指宽度上和高度上最多能显示的物理像素点个数(说的是块屏幕的像素尺寸)。

点距: 像素与像素之间的距离,点距和屏幕尺寸决定了分辨率大小

设备像素(又称为物理像素): 指设备能控制显示的最小物理单位,意指显示器上一个个的点。从屏幕在工厂生产出的那天起,它上面设备像素点就固定不变了,和屏幕尺寸大小有关,单位 pt。

设备独立像素(也叫密度无关像素或逻辑像素): 可以认为是计算机坐标系统中得一个点,这个点代表一个可以由程序使用的虚拟像素(比如: css像素),这个点是没有固定大小的,越小越清晰,然后由相关系统转换为物理像素。

css像素(也叫虚拟像素): 指的是 CSS 样式代码中使用的逻辑像素,在 CSS 规范中,长度单位可以分为两类,绝对(absolute)单位以及相对(relative)单位。px 是一个相对单位,相对的是设备像素(device pixel)。

设备像素比(devicePixelRatio): 设备像素比 = 设备像素 / 设备独立像素。(在Retina屏的iphone上,DPR为2,1个css像素相当于2个物理像素)

  • 普通密度桌面显示屏的 devicePixelRatio=1
  • 高密度桌面显示屏(Mac Retina)的 devicePixelRatio=2
  • 主流手机显示屏的 devicePixelRatio=2或3

视网膜显示屏 == Retina显示屏

高PPI(硬件) + HiDPI渲染(软件) = 更细腻的显示效果(retina)

方案

提供几种解决方案,若有更好的欢迎补充

// 2022-06-18 高分屏适配的许多尝试:
//【方案一】 Qt 5.14+, 解决 1.5会缩放到2倍,不过显示会有问题,比如按钮之间时不时会有虚线。
qputenv("QT_ENABLE_HIGHDPI_SCALING", "1");
QGuiApplication::setHighDpiScaleFactorRoundingPolicy(Qt::HighDpiScaleFactorRoundingPolicy);//【方案二】 Qt5.12 替代方案
qputenv("QT_AUTO_SCREEN_SCALE_FACTOR", "1.5");// 【方案三】 Qt5.12 替代方案
#if (QT_VERSION >= QT_VERSION_CHECK(5,9,0))qputenv("QT_SCALE_FACTOR", "1.0"); // 全局缩放因子 https://blog.csdn.net/u014410266/article/details/107488789QApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
#endif//【方案四】 使用 windows 自带的
exe 统计目录下使用 qt.conf 文件// 三种方案 https://blog.csdn.net/hanjiang08/article/details/124653265
// https://blog.csdn.net/qq_18260845/article/details/103861201
// https://blog.csdn.net/feiyangqingyun/article/details/124860909#if(QT_VERSION > QT_VERSION_CHECK(5,6,0))
//    QGuiApplication::setAttribute(Qt::AA_EnableHighDpiScaling);  // 2K、4K 2@ 倍;获取的分辨率 4K 下实际为 /2 后。 此行需在 QApplication a(argc,argv);前面
//    QCoreApplication::setAttribute(Qt::AA_UseHighDpiPixmaps);    // 控制图片缩放质量,svg 的图片不会模糊在 4K 上。   此行无需在 QApplication a(argc,argv);前面qApp->setAttribute(Qt::AA_UseHighDpiPixmaps);  // 上面一行没有生效,但是此行可以生效
#endif

Ref

  • 逻辑分辨率和物理分辨率到底是什么呀? - PeterZ的回答 - 知乎
  • Qt之高DPI显示器(一) - 解决方案整理
  • 分辨率,PPi,DPI,DPR,物理像素,逻辑像素区别
  • 前端不止:Retina屏幕下两倍图
  • 有关retina和HiDPI那点事
  • 对于 Retina Display 有哪些误解? - mysqto的回答 - 知乎
  • Qt 2D绘图(5):绘制图像基础
  • C++ Qt 高分屏处理心得_超哥的博客-CSDN博客
  • (52条消息)Qt on Mac 开发之 Qt在Retina屏幕上的那些问题_沙师弟专栏-CSDN博客
  • QT控件字体根据系统缩放比例(DPI)自适应_weixin_42132304的博客-CSDN博客
  • 高DPI显示| Qt 5.15
  • 物理像素、逻辑像素与PPI、DPI – fantab01的博客

高分屏、分辨率、DPI、PPI,及 Qt 处理高分屏相关推荐

  1. linux宽屏分辨率,LINUX下945G+19 宽屏分辨率1440*900设置

    LINUX下945G+19 宽屏分辨率1440*900设置 发布时间:2008-03-01 00:06:36来源:红联作者:Ooiqtd 作者:D版乞丐 时间:2008-02-27 邮箱: ihack ...

  2. android分屏分辨率,Android2.1用罕见15分屏 华为C8600评测

    1000-1500元Android主力 作为国内手机终端销量排名前三名的手机终端厂商,华为一直以来都是国内智能手机的推广者,在1000到1500元价位的Android产品当中,华为C8600一直都享有 ...

  3. HMI-7-[高分屏支持]:Qt 适配高分屏

    基于Qt的汽车仪表模拟 照例,还是先上效果图,宣传哈哈哈哈哈 今天学到一个新东西,就是Qt对高分屏的支持,即高DPI的支持,有个Qt写的软件在老板的SB2上运行出现了显示异常,因为老板的电脑分辨率是3 ...

  4. Qt :语法: QFont QFontMetrics pointSize 点大小 pixelSize 像素大小 屏幕分辨率 DPI:每英寸像素点

    关键词: QFont QFontMetrics pointSize 点大小 pixelSize 像素大小 屏幕分辨率 DPI:每英寸像素点 总结: 正常情况下,字体设置都是设置成 像素大小的. --q ...

  5. 关于像素、分辨率、PPI、DPI等概念的分析

    关于影像图的比例尺和分辨率:https://blog.csdn.net/liliiii/article/details/40261953 当我们说到 像素.分辨率.DPI.PPI等专业术语的时候,一般 ...

  6. 屏幕色彩与分辨率区别,PPI的概念,IPS屏与TFT屏

    转自:http://blog.csdn.net/jbb0523/article/details/7706903 题目:[整理]屏幕色彩与分辨率区别,PPI的概念,IPS屏与TFT屏 1)屏幕色彩与分辨 ...

  7. 分辨率、PPI、DPI、点距(显示器)

    分辨率.PPI.DPI.点距是买显示器的几个主要指标. 1.屏幕尺寸:屏幕对角线长度 2.分辨率:宽度和高度上最多能显示的物理像素点个数 3.PPI:屏幕像素密度,即每英寸(1英寸=2.54厘米)聚集 ...

  8. 【整理】屏幕色彩与分辨率区别,PPI的概念,IPS屏与TFT屏

    题目:[整理]屏幕色彩与分辨率区别,PPI的概念,IPS屏与TFT屏 1)屏幕色彩与分辨率区别 我们在这里所指的屏幕色彩实质上即为色阶的概念.色阶是表示手机液晶显示屏亮度强弱的指数标准,也就是通常所说 ...

  9. 图片尺寸像素点,图片的大小,分辨率,a4纸,dpi,ppi,pt,pixel像素,屏幕尺寸

    catalog 图片大小 a4纸 DPI,PPI Pt,Px 图片大小 对于RGB模式, 一个像素点, 由 (R, G, B) 三个 颜色通道 组成; 且, 每个通道, 都占 1个字节; color: ...

最新文章

  1. HDU_Virtual Friends (并查集)
  2. 单元测试中,模拟一个新对象
  3. 剑指offer06.从尾到头打印链表
  4. 一文带你快速读懂.NET CLI
  5. pdfbox创建pdf_PDFBox创建PDF文档
  6. pycharm中安装可以贴图片的Markdown插件
  7. mysql求和 子查询_MYSQL 查询方法 统计查询 链接查询 子查询
  8. 4k笔记本安装linux,Dell 4K Linux 笔记本 M3800 发售
  9. springboot集成mybati 后又使用mybatisPlus 出现的问题 BindingException:Invalid bound statement
  10. 输入网址的时候,浏览器是如何判断你是http协议还是https协议的
  11. mysql的engine不同,导致事物回滚失败的问题
  12. JavaWeb开发框架——Spring
  13. MAC如何烧录img文件或ios文件
  14. python-docx插入图片调整为封面图
  15. C语言的debugging
  16. 2023最新!QQ接入ChatGpt!!!保姆级教程
  17. BlumNet: Graph Component Detection for Object Skeleton Extraction阅读笔记
  18. 主流Wifi芯片简要介绍
  19. 利用PS调整图片文件的色彩饱和度
  20. dsp调音一次多少钱_dsp价格一般多少

热门文章

  1. 企业权限管理系统---用户模块
  2. 从金融IT公司工作10年后转到银行的工作体会
  3. PLC、运动控制卡、运动控制器,傻傻分不清
  4. java 哲学家_Java哲学家进餐问题|多线程
  5. 树莓派制作自己的小车车(上)
  6. python变量命名为什么不能以数字开头
  7. Apollo二次规划的应用之PWJ
  8. 计算机组成原理——移位运算
  9. 函数的上确界和下确界
  10. 我心爱的吉他坏了,心里像少了什么一样:(