java - 控制 Graphics2D 对象的 DPI

标签 java swing graphics2d dpi

我正在测量程序中的一些字体指标,然后使用它们来创建输出 PDF 文件。

为此,我使用了 Graphics2D、FontContextRendered、GlyphVectors 以及所有与之相关的东西。我在具有指定字体的 JTextArea 上调用 getGraphics()。

但是,如果两个用户使用相同的数据创建相同的文档,但在两个不同的设备上,我需要这些文档完全相同。

但是,由于 Graphics2D 使用当前设备的 DPI,这可能因设备而异,因此情况可能并非如此。

现在我可以做两件事:

  1. 我可以强制 Graphics2D 使用特定的 DPI(在我的情况下为 96)。
  2. 我可以找出 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/

相关文章:

java - 轻松生成休息服务的解决方案?

java - 如何在透明 JPanel 上添加 JComboBox?

java - 可滚动文本区域?

java - JXDatePicker 返回错误的日期

java - 删除在 Java GUI 中使用 Alt-F4 和 Alt-TAB 的可能性

java - 使用 apache poi 将 HSSF(excel) 嵌入到 HSLF(ppt) 中

java - Java 中的 Graphics2D

java - 图形列表2D

algorithm - 如何使用轴作为 HINGE 在 3d 空间中旋转矩形?

java - 上传文件时如何在 Google Drive API 中使用 newRevision 参数