我正在测量程序中的一些字体指标,然后使用它们来创建输出 PDF 文件。
为此,我使用了 Graphics2D、FontContextRendered、GlyphVectors 以及所有与之相关的东西。我在具有指定字体的 JTextArea 上调用 getGraphics()。
但是,如果两个用户使用相同的数据创建相同的文档,但在两个不同的设备上,我需要这些文档完全相同。
但是,由于 Graphics2D 使用当前设备的 DPI,这可能因设备而异,因此情况可能并非如此。
现在我可以做两件事:
- 我可以强制 Graphics2D 使用特定的 DPI(在我的情况下为 96)。
- 我可以找出 Graphics2D 使用的是哪个 DPI,然后据此扩充结果。
我猜第二种方式更容易,但我不知道如何去做。你能帮帮我吗?
最佳答案
Graphics2D g2d;
final AffineTransform trans = g2d.getDeviceConfiguration().getNormalizingTransform();
System.out.println(trans.getScaleX()*72+" DPI horizontally");
System.out.println(trans.getScaleY()*72+" DPI vertically");
您可以将转换设置为 Graphics2D
以强制使用 72 DPI 或使用所需 DPI 和 72 DPI 之间的比率将其缩放到任何其他 DPI。
关于java - 控制 Graphics2D 对象的 DPI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18878353/