用Java缩放图表以适应一个打印页面

用Java缩放图表以适应一个打印页面,java,printing,scaling,graphics2d,Java,Printing,Scaling,Graphics2d,我有一个使用Java和Graphics2D的绘图工具。我想缩放生成的图表,使其在打印时完全适合8.5 x 11页(横向) 我在某处看到页面缩放是72分之一英寸,但我不确定这和屏幕的dpi有什么关系。为了让事情变得更复杂,我的屏幕使用的是144dpi,但该软件包的大多数用户将使用72dpi或96dpi(不确定是哪个…?)。有没有人有管理所有这些dpi(包括打印)的经验 使用java.awt.print包,我可以打印我的图表,但是它们太大了,需要几页。我可以使用Graphics.scale(doub

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

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


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

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

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
我希望它能帮助你


问候

在屏幕上,通常一个单位是一个屏幕像素。在打印机上,它可能是1磅(=1/72英寸)。您到底有什么问题?嗨,帕罗-图表工具创建了适合我屏幕的漂亮图表。但是,当我使用awt.print打印它们时,它会使用多个页面,我不希望用户必须使用胶带将页面粘在一起!因此,我想缩放图表,使其适合一页。比例函数似乎有效,但我不知道如何计算比例因子。此外,我不确定缩放(double,double)是否是合适的功能-是否有更适合此作业的功能,例如打印属性?TIAI将实际问题添加到您的问题中。不过,我自己也没有用Java打印的经验。谢谢你,帕洛-那太好了!希望有人能给我指出正确的方向:-)这计算组件应该具有的大小,而不是比例因子。
pageFormat.getImageableWidth()
函数返回宽度,单位为1/72英寸,与
pageFormat.getImageableHeight()函数返回的宽度相同。(). 然后,它们返回刻度。此外,代码的最后一行选择最小比例因子以选择其中最好的。它们返回绝对大小,这与比例因子(两个大小之间的比率)完全不同。好的。我又读了一遍,现在明白了“1/72英寸”是公制单位。对不起,由于我的英语水平,我把解释弄错了=我想把赏金分给两个响应者,因为你们两个都帮助我走上了正确的道路——查理摩更是如此!虽然我不认为他/她的答案是完整的,但是Marty Hall页面上有一些好东西——我能够在它的pageFormat.getImageableWidth上进行搜索,这让我找到了JM Soan的一个页面。里面有更多的好东西:!谢谢你们,伙计们,我想我已经走上正轨了!