gpt4 book ai didi

JavaFX 8 HiDPI 支持

转载 作者:IT老高 更新时间:2023-10-28 20:40:33 57 4
gpt4 key购买 nike

我刚刚试用了 JavaFX Hello World Example在 Arch Linux 的 4k 屏幕上,但不幸的是 GUI 无法缩放。

documentation

Hi-DPI support. JavaFX 8 now supports Hi-DPI displays.



那么我怎样才能让我的应用程序知道 dpi 呢?

最佳答案

各种设备上的 Hi-DPI 支持

对于带有视网膜显示的 OS X Mac,它应该“正常工作”——JavaFX 知道 Hi-DPI Mac 并将适本地缩放 UI。如果将VBox中的间距设置为8,则为设备无关单位;在非视网膜显示器的 Mac 上,它将占用 8 个像素,在分辨率翻倍的视网膜显示器上,间距将占用 16 个像素。由于视网膜显示器的 DPI 和分辨率是非视网膜显示器的两倍,因此无论设备如何,空间的物理屏幕测量都是相同的。

对于 Windows 和 Linux 设备,您的结果可能不太令人满意,因为 JavaFX 8u20 当前默认情况下不会在此类设备上计算任意 DPI 分辨率并适本地缩放到它们。您可以做的是在 css as em units 中执行大部分测量。 (基于场景根默认字体的磅值)和 similarly for fxml ,然后根据您通过查询屏幕的 DPI 分辨率确定的内容,适当设置场景根默认字体的磅值。有关更多信息和示例代码,请参阅此答案中的讨论:javafx automatic resizing and button padding .

特定于 Gnome

Gnome 3 有一个 setting for the scaling factor可以通过这个命令控制:

gsettings set org.gnome.desktop.interface scaling-factor 2

您可以通过读取用户的 gnome 配置文件设置来查询此缩放因子,并将其与查询屏幕 DPI 结合使用,以计算出适当的缩放因子如何使用上述技术应用缩放。

只是个人轶事 - 几天前,当我尝试在 Hi-DPI 显示器上使用 Gnome 3 缩放(CentOS 7 和最近的 Fedora 版本)时,我发现在 Linux 下运行的应用程序对 Hi-DPI 的整体支持是相当参差不齐。当然,当我尝试这样做时,CentOS 6 的支持得到了很大改善,但是要跨窗口工具包、标准应用程序和第三方应用程序实现高质量的 Hi-DPI 支持,还有很长的路要走。出于这个原因,我相信运行 HiDPI Gnome 桌面仍然是一件非常前沿的事情,这绝对不适合所有人——我相信这种情况会随着时间的推移而改变。

位图图像

来自 JavaFX 团队负责人 blog entry on Hi-DPI :

In Apple’s applications (starting with the iPhone and iPad with their retina displays), the solution to the problem is for the application developer to supply two images instead of one for each image asset. For example, the splash screen will be supplied with two images, one at normal resolution and one at 2x the resolution. The files are named the same but the 2x one is named according to some convention, such that at runtime the platform will lookup the 2x version on retina behind the scenes. In such a way, your application says “fooImage.png” but “fooImage@2x.png” is looked up instead when on a machine with a retina display.



我不知道这个用于 Hi-DPI 显示器的位图图像选择功能当前是否在 Java 8u20 中 - 您可能必须通过使用 screen.getDpi() 查询屏幕来自己实现它。 ,然后加载适当的位图。

4K 设备

4K 需要大量像素。当此类图形管道可用时,JavaFX 将默认使用硬件加速图形管道。某些图形硬件可能未针对 4K 显示进行完全优化(例如,视频内存不足),这可能会导致应用程序无法运行或性能不佳。我也不相信目前在调查各种 4K 设备上的 JavaFX 性能方面付出了很多努力——它可能“正常工作”,但也可能不会。您需要在目标硬件上测试您的应用程序,以确定 JavaFX 应用程序在该硬件上运行时的当前功能。您可能还需要根据上面的一些建议调整应用程序。

用户在尝试使用 JavaFX 显示 4K 视频时报告了 JavaFX 8u20 的问题:
  • JavaFX Ultra HD (4K) video

  • 背景

    在 OS X 下支持 Hi-DPI(可能)比 Windows/Linux 设备更简单,因为目标设备是视网膜或非视网膜显示器,其中一个是另一个精确的 2 倍,并且可以利用 OS X 系统的直接支持以帮助实现视网膜缩放。对于 Windows/Linux,可能需要的是能够以 2 倍以外的其他因素进行扩展,这涵盖在(当前未完成和计划中的)功能请求 RT-32521 Support global coordinate scaling with DPI-based default 中。 .按整数缩放通常会给出最好的可见结果。

    其他资源
  • Kynosarges 讨论 JavaFX DPI Scaling .
  • JavaFX 团队负载写了一个 blog on JavaFX on retina Macs (这现在有点过时了,因为 JavaFX 现在支持 Retina Mac)。
  • 兰达尔对 JavaFX: Designing for Multiple Resolutions 的看法.
  • Apple 在 optimizing applications 上有一些不错的建议对于高分辨率设备,它不是 JavaFX 特定的,一些建议不适用于 JavaFX,但仍然有一些有用的一般原则和技术。

  • Hi-DPI 设备编码的完整指南不在此特定答案的范围内 - 您可以谷歌各种网络资源以获取更多信息。

    如果您对 JavaFX 的 Hi-DPI 支持还有其他疑问,我建议您在 openjfx-dev JavaFX developer mailing list 上提问。 .

    维基答案

    这个答案可能有一些可能的不一致或错误,并且可能会随着时间的推移而过期。我已经制作了答案社区维基。如果您知道 JavaFX 上 Hi-DPI 的具体更正、设备和操作系统限制或支持模型支持,请随时编辑此答案或将其移至 OpenJFX wiki (无论如何它可能属于)。

    关于JavaFX 8 HiDPI 支持,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26182460/

    57 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com