【问题标题】:Scaling Handled Differently in Java and Eclipse Framework在 Java 和 Eclipse 框架中以不同方式处理缩放
【发布时间】:2018-03-21 11:09:26
【问题描述】:

我们在缩放监视器上使用Paperclips(SWT 打印库)时遇到问题,但我认为这与框架无关,而与 Eclipse 环境无关。

我们来看一个例子:

左侧是没有缩放(或 100%)的打印,右侧是在显示器上以 175% 缩放的相同打印。我知道你在想什么:显示器及其分辨率/缩放不应该对打印产生影响。对,应该。

虽然这很可悲,但这不是什么大问题。但问题来了:上面的打印是由作为插件测试运行的 JUnit 测试用例生成的。如果我将它们作为常规单元测试运行两者都可以工作。

很明显,当在 OSGi 上下文中启动时,Eclipse 环境中的某些东西的工作方式不同,我正试图找出它是什么(所以我可能会阻止它)。

我认为这是一个很好的谜题。

如果您需要关于 SWT 类可能是什么的提示,我将其缩小到该表的 ScalePrint.java 文件(即,如果我从我的演示中删除 ScalePrint 的实例,则该表将正确显示;但是,标题仍然是错误的)。

我可以确认该错误仅存在于 Eclipse 4.6 中,而不是 4.5 或 3.7(这并不奇怪,因为 4.6 是第一个支持缩放的版本)。如果我在 VM 选项中添加 -Dswt.autoScale=100 以禁用缩放,它也会按预期工作。

我可以附加我的测试用例,但正如我所说,我真的不认为它与回形针本身有任何关系。

那么...与在普通 Java 应用程序中运行相同的代码相比,启动整个 Eclipse 框架时,有什么会破坏缩放?

【问题讨论】:

    标签: eclipse-plugin eclipse-rcp


    【解决方案1】:

    问题是使用类Transform,它本身使用静态字段DPIUtil.deviceZoom(形式为DPIUtil.autoScaleUp(float dx))。

    由于DPIUtil.deviceZoom 是一个静态字段,当与具有缩放功能的主监视器一起使用时,一切都会失败(因为打印机没有)。

    【讨论】:

      猜你喜欢
      • 2012-12-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多