windows DPi缩放

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了windows DPi缩放相关的知识,希望对你有一定的参考价值。

参考技术A 长期使用surface pro 4,267dpi,使用标准的200%缩放,四个像素对应一个标准像素点,操作系统自带win10,基本没遇到什么缩放问题。字体不算大,在精细的dpi下可看,一直使用良好。

关于自身适用的dpi,标准dpi为96个像素每平方。通常 这个分辨率用在显示器上比较合适,比如24寸的1080p,32寸的1440p,都是最佳分辨率。笔记本上我一直觉得air13.3对应的1440*900是最佳分辨率,对应的dpi是128。

由此可得,在200%缩放下,显示器的dpi要翻倍,通常为24寸对应4k,考虑200%缩放下字体更加精细,27寸的5k或21.5寸的4k也是可以的 对应dpi为210左右;笔记本在200%缩放下对应的最佳DPI为260左右,例如surface book13.5 对应的3000*2000分辨率

市面上的笔记本和显示器多为1080p分辨率,13 14 15寸的都有,2k、4k屏一般也不是标准的200%缩放所适应的dpi。考虑到显示字体大小,通常会用到125%、150%、175%和250%缩放等。在这种缩放情况下,原先的像素点不是倍数对应的关系,在源程序没有适配windows缩放机制的情况下,可能出现显示模糊。

win10 1703版本目前的缩放机制是:

1、可自适应高dpi程序,如商店中的UWP,拳头产品新版office套装、最新版QQ、Chrome、微信等,均可以顺利的适应各种缩放设置

2、不能自适应高dpi的程序 如 新纪元 steam等 微软采用的方式是以图片放大的形式进行缩放,会导致字体模糊

3、不能自适应高dpi的程序,可以禁用dpi缩放,此时程序不会模糊,可能字体偏小,在125%缩放下一般可用。

自适应高dpi程序:微软商店的UWP程序 如淘宝 爱奇艺等 新版qq chrome 微信 totalcommander 7-zip kindle 京东阅读 钉钉 Anydesk acrobat reader foxit reader IDM potplayer 有道词典 calibre 阿里旺旺

不支持高dpi的程序 新纪元 steam  foxmail listary 迅雷 光影魔术手 百度网盘

以上自适应高dpi程序各种缩放下均显示正常

不支持高dpi程序在200%缩放下显示正常,非倍数缩放显示有模糊感

如何在 linux 的高 dpi 显示器上修复基于 java 的应用程序的缩放?

【中文标题】如何在 linux 的高 dpi 显示器上修复基于 java 的应用程序的缩放?【英文标题】:How to fix scaling of a java-based application on a high dpi display in linux? 【发布时间】:2020-03-01 03:36:21 【问题描述】:

我刚刚切换到 java 11 (AdaptOpenJDK),这样我的 java Swing 应用程序在不同系统缩放设置下的高 dpi 显示器上看起来还不错。

在 Windows 上运行正常。无论系统上配置的缩放值如何,java 都会自动检测并使用它来相应地缩放 GUI。

但是,在 Linux 上,GUI 不考虑系统缩放,因此在高 dpi 显示器上看起来很小。

在这里阅读了一些帖子后,我发现我可以指示 java 使用什么缩放值。例如,如果系统缩放为 200%,那么我可以将以下命令行参数添加到用于启动应用程序的 java 命令中。

-Dsun.java2d.uiScale=2.0

当我添加上述命令行选项时,Linux 上的 GUI 看起来不错。

我还读到我可以设置 GDK_SCALE 环境变量。

不过,我想找到一个更好的解决方案。 理想情况下,我不需要指定要使用的缩放值。 有人知道这是否可能吗?

如果上述方法不可行,那么我想我的下一步将是在 linux 中提出一个返回当前系统缩放值的命令,并使用它来设置 sun.java2d.uiScale 选项。

感谢任何帮助。

谢谢。

【问题讨论】:

貌似和这个问题有关:bugs.openjdk.java.net/browse/JDK-8260270 这不是java问题。这是“the”linux 显示管理器的问题。我还有一个高 dpi 显示器,这会导致 gui 的大小出现问题。因为我只用xorg,我用Xft.dpi: 140.Xresources做的(xrandr没用)以前的hdpi问题应该解决openjdk.java.net/jeps/263 【参考方案1】:

你可以试试这个:

-Dsun.java2d.ddscale=true

编辑:

正如官方文档所说,“如果 DirectDraw/Direct3D 管道正在使用,则将此标志设置为 true 可启用硬件加速缩放。DirectDraw/Direct3D 硬件缩放默认禁用以避免在现有应用程序中呈现伪影”

更多信息可以查看官方Oracle documentation about system properties。

【讨论】:

不管这有助于回答这个问题,请提供更多关于它的作用以及它如何解决手头问题的背景信息。简单地发布一段代码而没有解释会造成更多的混乱。 对不起,我的错。我添加了一个带有 Oracle 文档链接的描述,感谢您的建议 :) 不错。谢谢! 不幸的是,这对我不起作用。 这是指Java 7文档,不适用于问题所在的情况。

以上是关于windows DPi缩放的主要内容,如果未能解决你的问题,请参考以下文章

Windows:缩放设置及DPI缩放详解

停止 Firefox DPI 缩放(当 Windows 设置为 125% 时)

win10缩放影响鼠标dpi

掉坑日志:Windows Native API与DPI缩放

“使用 windows xp 风格的 dpi 缩放”禁用 W7 上任务栏的自动自动隐藏。解决方法?

Dpi缩放问题