如何防止96 dpi下自动缩放

发布于 2025-01-10 23:26:44 字数 1084 浏览 0 评论 0原文

在 NatTable 版本 2 中,创建表时添加了自动缩放功能,默认 DPI 转换器支持:DefaultHorizo​​ntalDpiConverter、DefaultVerticalDpiConverter。在版本 1 中,96 DPI 以下的所有内容都没有缩小,但是,现在在版本 2 中,对于较低 DPI,NatTables 被缩小,因此图像看起来很难看,字体还可以:

72dpi - 不可以:

输入图像描述这里输入图片此处描述输入图片此处描述

96dpi - 好的:

在此处输入图像描述输入图片此处描述输入图片此处描述

防止 96 DPI 下默认缩放的最简单方法是什么?

In NatTable version 2 an autoscale was added while the tables are being created, supported by default DPI converters: DefaultHorizontalDpiConverter, DefaultVerticalDpiConverter. In version 1 everything under 96 DPI was not scaled down, however, now in version 2 for lower DPIs NatTables are scaled down hence images look ugly, fonts are ok:

72dpi - not ok:

enter image description here
enter image description here
enter image description here

96dpi - ok:

enter image description here
enter image description here
enter image description here

What would be the simplest way to prevent default scaling under 96 DPI?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

剩余の解释 2025-01-17 23:26:44

NatTable 2.0添加的功能是完整的动态缩放和对所有DPI的完全支持。以下博客文章应该提供更多详细信息 NatTable – 动态缩放 事实上,

我想知道较低的 DPI 有何“丑陋”之处。至少在现代显示器上这不应该是一个问题。我唯一能想到的就是图像。但通常缩小尺寸不会使图像变得难看。因此,了解问题所在真的很有趣。

您有两种选择来处理这个问题:

  1. 由于您可以在运行时动态缩放 NatTable,因此您只需执行 ConfigureScalingCommand 即可强制进行所需的缩放。请注意,这需要在 NatTable#configure() 之后完成。

    if (Display.getDefault().getDPI().x < 96) {
        natTable.doCommand(
            新的ConfigureScalingCommand(新的FixedScalingDpiConverter(96)));
    }
    
  2. 如果您甚至想在动态缩放中阻止较低的缩放,您可以实现一个自定义的 ConfigureScalingCommandHandler 来检查 IDpiConverter 中的 dpiFactor 以及是否低于1 在 SizeConfigs 上注册一个 FixedScalingDpiConverter。然后需要在 DataLayer 上注册该自定义 ConfigureScalingCommandHandler 以替换默认值。

第二种方法可能有点复杂,需要更好地了解 NatTable 内部结构。它阻止动态缩放功能来真正缩小巨大的桌子。因此,这取决于您的用例使用哪种方法。通常第一个选项应该足够了。

顺便说一句,如果图像是问题所在,则在运行时更改缩放而不重新注册图像也可能会导致渲染问题。原因是图像存储在 ImageRegistry 中,并且需要在缩放发生变化时进行更新。对于方法 1,这意味着在 ConfigureScalingCommand 之后再次将所有图像注册到 ConfigRegistry 中。至少如果您不使用主题或 CSS 样式。

The feature that was added with NatTable 2.0 is a complete dynamic scaling and the full support for all DPI. The following blog post should give some more details NatTable – dynamic scaling enhancements

Actually I wonder what is "ugly" with lower DPIs. At least on modern displays it should not be an issue. The only thing I could think of are the images. But typically downscaling doesn't make images ugly. So it would be really interesting to know what the issue is.

You have two options to handle that:

  1. As you can scale NatTable dynamically at runtime, you can simply execute the ConfigureScalingCommand to force the scaling you want. Note that this needs to be done AFTER NatTable#configure().

    if (Display.getDefault().getDPI().x < 96) {
        natTable.doCommand(
            new ConfigureScalingCommand(new FixedScalingDpiConverter(96)));
    }
    
  2. If you even want to block lower scalings on the dynamic scaling, you can implement a custom ConfigureScalingCommandHandler that checks for the dpiFactor in the IDpiConverter and if that is lower than 1 register a FixedScalingDpiConverter on the SizeConfigs. That custom ConfigureScalingCommandHandlerthen needs to be registered on the DataLayer to replace the default.

The second approach is probably a bit more complicated and needs a better understanding of NatTable internals. And it blocks the dynamic scaling feature to really zoom out on huge tables. So it depends on your use cases which approach to use. Typically the first option should be sufficient.

BTW, if the images are the issue, changing the scaling at runtime without re-registering the images could also cause a rendering issue. The reason for this is that images are stored in the ImageRegistry and they need to be updated there in case of scaling changes. For approach 1. that means to register all images in the ConfigRegistry again after the ConfigureScalingCommand. At least if you are not using themes or CSS styling.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文