qt 5.5文档翻译系列-High DPI Displays

高DPI显示

    高DPI的显示器用来显示高质量的图像和清晰的字体越来受欢迎。例如,4K显示器包含3840x2160像素,逻辑分辨率为192DPI,然而比较老的显示器中大约有1920x1080像素达到96DPI。

  1. 高DPI带来的问题

高DPI显示会引起现有的应用程序许多问题:

  • 应用程序使用UI设计和固定坐标会看起来比较小。用点和用像素表示的尺寸去指定字体大小是不确定的因为点是和显示器分辨率无关的。例如,一个40x20像素的fram,使用12pt的文本“hello”在低分辨率的显示器下可以正确的显示,但是在高分辨率的显示器上这个frame就太小了,导致这个文本都看不清了。

  • 应用程序必须适应用户在多个不同分辨率下显示。例如,用户可能使用4K显示器显示一个图像编辑器的文档窗口,用低分辨率的显示器去显示工具箱。

  • 辅助存储和pixmap缓存将变得非常大,导致渲染速度可能会变慢。

  1. 操作系统支持

    对于高分辨率的显示操作系统支持qt提供的下列支持:

    OS X

    在OS X上,这些都是单独的,基于float的用户坐标系统(不是设备像素)。对于高DPI的显示器,操作系统将使用高效的缩放算法缩放内容使其看起来非常清晰(视网膜显示屏)。

    注意:缩放不应用于OpenGL窗口。

    Microsoft Windows

    缩放

    用户能从控制面板或上下文菜单选择缩放因子。这是通过查询系统度量单位的功能为标准字体尺寸,窗口边界的尺寸,等等返回不同的值。操作系统不执行任何实际的缩放。

    DPI感知(DPI Awareness)

    在Windows中一个应用程序能声明以下DPI感知级别:

DPI Awareness 级别 含义
DPI Unaware 这个级别在Windows-Vista中加入。Windows将模拟应用程序运行在1920x1080 96DPI的标准显示中并且缩放应用程序。目的是适应为低DPI显示设计的较老的应用程序。一些工件可能来源于这种类型缩放。
System-DPI
Aware
这个级别在Windows-Vista中加入。当有多个显示器连接它不同于Per-Monitor DPI Aware。Windows将为所有连接的显示器估算一个合适的缩放值。
Per-Monitor
DPI
Aware
这个级别已经在Windows 8.1中加入。Windows不执行任何缩放。

在Windows 8.1活Qt应用程序默认是Per-Monitor DPI Aware,在老版本的Windows是System-DPI Aware。自Qt5.4,能通过一个参数去指定平台插件(具体请看官方文档Using qt.conf):

<application> -platform windows:dpiawareness=0,1,2

Qt支持

  • 能够提供pixmaps或者高像素的原图:请看官方文档Drawing High Resolution Versions of Pixmaps and Images.

  • Qt5.4加入了对缩放实验性的支持通过设备像素比对Windows和Unix(XCB)去模拟OS X平台插件。由环境变量QT_DEVICE_PIXEL_RATIO控制。可以设置一个数值被用作缩放因子或者“auto”通过检查这个显示器尺寸去决定缩放因子。

    推荐使用Fusion风格。

    移植存在的应用程序

    为了很快让一个为低DPI值设计的应用程序运行在一个高分辨率显示器,考虑缩放选项(让应用程序在Windows上用DPI Unawware运行或者设置环境变量QT_DEVICE_PIXEL_RATIO的值为“auto”。尽管这个选项可能会导致缩放或者绘制控件)

    从长远来看,应用程序应该被适应运行未修改:

    • 总是使用QPainter的qreal版本的绘制API。

    • 窗口和对话框大小和屏幕大小的关系。

    • 取代在布局中硬编码尺寸并且绘制代码通过从字体度量值或者屏幕尺寸计算值。

高DPI专业术语表

术语 定义
设备独立像素 用在应用程序的像素(用户空间),由操作系统或者Qt进行缩放。
设备像素 显示设备的像素。
设备像素比 由操作系统或者Qt应用的缩放因子。
逻辑DPI 像素被用来定义以点为单位的字体尺寸到以像素为单位的字体尺寸转换。典型的标准值有96,128...192。
物理DPI 物理分辨率可以通过显示器尺寸除以像素的数量求出。
视网膜显示屏 请看Wikipedia on Retina Displays
用户空间 应用程序使用的坐标空间(设备独立像素)。

这篇文档就翻译完啦!英语太差翻译这个翻译了好几个小时,还有很多词句叫不准,翻译的不好,希望大家批评指正!

你可能感兴趣的:(qt,文档翻译)