2017-03-25 9 views
0

JPanelをImageに変換しようとしていて、iTextを使用してPDFに書き込んでいます。 JPanelをImageに変換する方法を検索し、2つの「作業中」のソリューションが見つかりました。画像にJPanelを変換するiText PDFに白または透明な背景で追加する

private BufferedImage createImage(JPanel panel) { 
    int w = panel.getWidth(); 
    int h = panel.getHeight(); 
    BufferedImage bi = new BufferedImage(w, h, BufferedImage.TYPE_INT_ARGB); 
    Graphics2D g = bi.createGraphics(); 
    panel.print(g); 
    return bi; 
} 

public static java.awt.Image getImageFromPanel(JPanel component) { 
    BufferedImage image = new BufferedImage(component.getWidth(), 
      component.getHeight(), BufferedImage.TYPE_INT_ARGB); 
    component.paint(image.getGraphics()); 
    return image; 
} 

あなたが見ることができるように、私はすでに、透明又は白色の背景に画像に変換しようとする「ARGB」を使用しますが、それは仕事をdoesntの。添付の画像を参照してください。 イメージに変換し、白または透明な背景のPDFに印刷する方法はありますか?以下は

Image written on PDF

底部の上のコードを使用してのJPanelから変換された画像である私がイメージ JPanel I want to convert

+0

おそらく、JPanelの** opaque **プロパティをfalseに設定しようとします。 'panel.setOpaque(false);'。 – DevilsHnd

答えて

0

に変換したいJPanelの画像や印刷に変換する方法があるありますそれは白または透明な背景とPDFに?

デフォルトでは、JPanelは不透明で独自の背景を持ち、背景が画像にコピーされます。

私はこのような何かが動作する前にこれを試していないが、おそらくネスティングパネルたことがない:

JPanel imagePanel = new JPanel(); 
imagePanel.setOpaque(false); 
JPanel backgroundPanel = new JPanel(new BorderLayout()); 
backgroundPanel.add(imagePanel); 
frame.add(backgroundPanel); 

あなたがBufferedImageを作成するときだから今imagePanelは透明でする必要があります。しかし、それはbackgroundPanelの背景色を継承し、フレーム内ではまだ正しいように見えます。

関連する問題