【问题标题】:Printing Text to a Page in Java with Graphics2D使用 Graphics2D 在 Java 中将文本打印到页面
【发布时间】:2011-11-30 01:43:20
【问题描述】:

这是我现在的代码:

public int print(Graphics graphics, PageFormat pageFormat, int pageIndex) 
        throws PrinterException
{
    if(pageIndex > 0)
    {
        return NO_SUCH_PAGE;
    }

    Graphics2D g2d = (Graphics2D)graphics;
    g2d.translate(pageFormat.getImageableX(), pageFormat.getImageableY());

    String lineText;
    int lineSpace = 12;
    //Draw out each seperate line.
    for(int i = 0; i < storyText.length; i++)
    {
        //I split the text at "\n" and stored the lines in storyText.
        lineText = storyText[i];
        lineSpace += 15;

        graphics.drawString(lineText, 0, lineSpace);
        //What about g2d? Could or should I use that instead?
        //g2d.drawString(lineText, 0, lineSpace);
    }

    return PAGE_EXISTS;
}

这会画一条线,然后向下移动一些空格(不确定使用哪种单位),然后画下一条线。这是可行的,但问题是,在水平方向上,文本被左边的边距吃掉了。

有没有人可以解决这个问题?我最近才开始修补用 Java 打印到页面。我应该在文本中插入换行符以绘制较短的文本行吗?我如何确定何时插入换行符?

或者我只是做错了?也许是不同的方法?

【问题讨论】:

    标签: java printing word-wrap graphics2d


    【解决方案1】:

    drawString() 方法中的第二个参数控制该文本行开头的 x 坐标。它使用的单位是点,每英寸 72 点。因此,要使行从离纸的左侧更远的地方开始,请将 0 更改为更大的数字,也许是 36,这将导致它从物理页面左侧半英寸处开始。

    另一种选择是使用pf.setImageable(x, y, sizeX, sizeY),其中x 和y 是双精度数,表示可打印页面左上角的坐标,sizeX 和sizeY 是双精度数,表示可打印页面的尺寸。然后使用g2d.translate(pf.getImageableX(), pf.getImageableY())Graphics2D 对象的原点设置为可打印页面的原点。这种方式可能更容易。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-11
      • 2012-06-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-14
      • 1970-01-01
      • 2015-05-05
      相关资源
      最近更新 更多