2016-04-18 4 views
0

作成したグラフから画像(PNG)を保存する方法についてアドバイスをいただけますか?グラフからイメージを作成するには?

これは、Javaプログラムです:

public class GraphingData extends JPanel { 
    int[] data = { 
      110, 535, 0, 459, 380, 199, 212, 722, 332, 836, 149, 10, 656, 465, 100, 173, 277, 381, 685, 988, 89, 585, 381, 779, 378, 769, 265, 10 
    }; 
    final int PAD = 20; 

    protected void paintComponent(Graphics g) { 
     super.paintComponent(g); 
     Graphics2D g2 = (Graphics2D)g; 
     g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, 
          RenderingHints.VALUE_ANTIALIAS_ON); 
     int w = getWidth(); 
     int h = getHeight(); 

     ....... 
    } 

    public static void main(String[] args) { 
     JFrame f = new JFrame(); 
     f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     f.add(new GraphingData()); 
     f.setSize(1000,500); 
     f.setLocation(200,200); 
     f.setVisible(true); 
    } 
} 
+0

可能なdupはhttp://stackoverflow.com/questions/8202253/saving-a-java-2d-graphics-image-as-png-fileですか? – vjkumar

答えて

0

それが現在の画面(サイズなど)に示す方法パネルを格納するファイルにちょうどそのほか

BufferedImage bi = new BufferedImage(panel.getSize().width, panel.getSize().height, BufferedImage.TYPE_INT_RGB); 
panel.paint(bi.createGraphics()); 
ImageIO.write(bi, "PNG", new File("path/to/file.png")); 

を行い、使用しないでくださいグラフィックスはpaintComponentに直接渡されますが、その上にg.create()を呼び出し、その新しいインスタンスを終了した場合はdispose()を呼び出します。あなたは、色、変換などについて入れられているGraphicsオブジェクトを変更しないで、create()dispose()を使用してください。

+0

素晴らしい、うまく動作します!ありがとうございました 私の質問は今では変更を加え、画像を保存する方法はありません f.setvisible(true) f.setvisible(false)保存した画像は黒で表示されます – ezzitt

+0

塗られていない。 e。 g。 widthまたはheightが0の場合、 'paint()'はすぐに何も出力せずに戻ります。 Btw。コンポーネントをまったく表示したくない場合は、イメージにペイントするだけでコンポーネントを作成するのは意味がありません。最終的に画面に表示したい場合は、サイズを優先サイズまたは他のサイズに設定して、うまくいくかもしれません。しかし、私は心配し、それにデバッグして参照してください。そういうわけで私はそれが画面に表示されているようなイメージに描かれていると言いました。 ;-) Btw。 http://stackoverflow.com/help/someone-answersを読んで従ってください – Vampire

関連する問題