簡體   English   中英

將Java2D圖形工程圖傳送到多個Graphics上下文中

[英]Pipe Java2D Graphics drawings into multiple Graphics contexts

有誰知道是否有辦法(也許通過外部API)將圖形圖形/轉換為多個圖形? 想法是同時保存PNG和PDF(使用Java IText庫)。

您可以將Graphics對象寫入(java,而不是iText)Image對象。 您可以使用以下API調用將java.awt.Image添加到iText:

  • Image#getInstance(java.awt.Image,java.awt.Color)
  • Image#getInstance(java.awt.Image,java.awt.Color,boolean)

或者,您可以將圖像輸出到ByteArrayOutputStream並通過以下方法添加byte []:

  • 圖像#的getInstance(字節[])
  • Image#getInstance(byte [],boolean)

iText圖片API: http//api.itextpdf.com/itext/com/itextpdf/text/Image.html

我不熟悉PDF功能,但是我假定它不是將繪制的元素存儲為圖像,而是存儲為某種矢量圖形(基於實際的Graphics#draw...調用,類似於來自Http的 SVGGraphics2D ://xmlgraphics.apache.org/batik/using/svg-generator.html )。

無論如何,您應該考慮使用不同的Graphics對象進行兩次paint(g)調用。 我能想象的唯一選擇是丑陋的...

class MulticastGraphics2D extends Graphics2D {
    private List<Graphics2D> targets = new ArrayList<Graphics2D>();
    void allTarget(Graphics2D g) { targets.add(g); }
    void removeTarget(Graphics2D g) { targets.remove(g); }

    @Override
    public void drawLine(int x0, int y0, int x1, int y1) {
        for (Graphics2D target : targets) target.drawLine(x0,y0,x1,y1);
    }

    // + hundreds of further overridden methods....
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM