【问题标题】:Scaling diagrams in Java to fit one print page在 Java 中缩放图表以适应一个打印页面
【发布时间】:2011-07-23 20:43:30
【问题描述】:

我有一个使用 Java 和 Graphics2D 的图表工具。我想缩放生成的图表,使其在打印时完全适合 8.5 x 11 页面(横向)。

我在某处看到页面缩放为 72 英寸,但我不确定这与屏幕的 dpi 有何关系。为了让事情变得更复杂,我的屏幕以 144dpi 工作,但该软件包的大多数用户将使用 72dpi 或 96dpi(不确定哪个...?)。有没有人管理所有这些 dpi 的经验,包括打印?

使用 java.awt.print 包我可以打印我的图表,但是它们太大了,需要使用好几页。我可以使用Graphics.scale(double, double) 缩放它们,但是如何计算缩放因子以使图表适合一页? Graphics.scale(double, double) 到底是不是正确的工具?

【问题讨论】:

  • 在一个屏幕上,通常一个单位是一个屏幕像素。在打印机上,它可能是 1 pt(= 1/72 英寸)。
  • 您的问题到底是什么?
  • 嗨 Paŭlo - 图表工具可以创建适合我屏幕的漂亮图表。但是,当我使用 awt.print 打印它们时,它使用的页面不止一页,而且我不希望用户必须使用胶带将页面粘在一起!所以我想缩放图表以适合一页。比例函数似乎工作,但我不知道如何计算比例因子。另外,我不确定 scale(double, double) 是合适的功能 - 是否有更适合这项工作的功能,例如打印属性? TIA
  • 我在您的问题中添加了实际问题。不过,我自己没有任何使用 Java 打印的经验。
  • 谢谢,Paŭlo - 太好了!希望有人可以为我指明正确的方向:-)

标签: java printing scaling graphics2d


【解决方案1】:

我在网上找到了这段代码。我认为它可以解决您的问题。

Graphics2D g2d = (Graphics2D)g; 
//Scale the component to fit    
//Calculate the scale factor to fit the window to the page.
double scaleX = pageFormat.getImageableWidth();
double scaleY = pageFormat.getImageableHeight();
double scale = Math.min(scaleX,scaleY);  //Get minimum scale factor

希望对你有帮助。 Link to the web

问候!

【讨论】:

  • 这会计算组件应具有的大小,而不是比例因子。
  • pageFormat.getImageableWidth() 函数返回宽度,以 1/72 英寸为单位,与 pageFormat.getImageableHeight()function 返回高度相同。 (Link to PageFormat JavaDoc)。然后,他们返回秤。此外,代码的最后一行选择了最小比例因子,以便从中选出最好的。
  • 它们返回绝对大小,这与比例因子(这将是两个大小之间的比率)完全不同。
  • 好的。我又读了一遍,现在明白“1/72 英寸”是公制单位。对不起,由于我的英语水平,我混淆了解释。 =S
  • 我想在两个响应者之间分配赏金,因为你们都帮助我走上了正确的道路 - TheCharliemops 更是如此!虽然我不认为他/她的回答是完整的,但 Marty Hall 页面有一些好东西 - 我能够在 pageFormat.getImageableWidth 上进行搜索,这让我找到了 JM Soan 的页面。其中有更多好东西:it.toolbox.com/wiki/index.php/How_to_print_in_Java!所以谢谢,伙计们-我想我现在走上了正轨!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-09
  • 2020-05-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多