2

JPanelの背景色を白に設定しました。しかし、JPG などの画像形式で保存すると、背景が黒くなります。このコードを入れましTYPE_INT_ARGBたが、動作しません。背景を他の色に設定するにはどうすればよいですか? 例:青、白など

    public void paintComponent(Graphics g) {
       int width = getWidth();
       int height = getHeight();

       // Create a buffered image in which to draw
       BufferedImage bufferedImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);

       // Create a graphics contents on the buffered image
       Graphics2D g2d = bufferedImage.createGraphics();     
       g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
       g2d.setStroke(new BasicStroke(1)); // set the thickness of polygon line
       g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 1.00f));
       g2d.setPaint(Color.black);//color of the polygon line
       g2d.setBackground(Color.WHITE);

       //draw polygon
       for (Polygon triangle : triangles)  
         g2d.drawPolygon(triangle);

       try {
           File file = new File("newimage.jpg");
           ImageIO.write(bufferedImage, "jpg", file);
       } catch (IOException e) {
         }          
 }//public void paint(Graphics g)   
4

4 に答える 4

4

これは非常に古い質問だと思いますが、私自身も同様の問題を抱えていました。答えを見つけたので(javadocsにあります)、とにかくここに投稿すると思いました。

グラフィックオブジェクトに背景色を設定すると、領域をクリアしたときにのみ有効になります。したがって、すぐに領域全体をクリアすると、背景が好みの色になります。

graphics.clearRect(0, 0, width, height);
于 2012-03-31T22:29:10.293 に答える
0

あなたはあなたの質問で解決策を提供します。BufferedImage ではなく、パネルの背景を白に設定します。画像をパネルではなく JPEG として保存するため、JPEG にはデフォルトの背景があり、黒で表示されます。

于 2009-10-16T06:30:16.420 に答える
0

あなたが私に尋ねると、イメージを作成するためのあなたのアプローチは逆です。他のすべての質問は、パネル上のポリゴンのペイントに関するものでした。画像にペイントするようにコードを変更していますか?

JPanel を拡張して super.paintComponent() を呼び出すと、何が起こると思いますか? 背景がペイントされます!次に、カスタム ポリゴン ペインティングを行います。上記のコードでは、画像を作成してからポリゴンをペイントするだけです。

より簡単な方法は、パネルを画像にペイントするルーチンを作成することです。そうすれば、すべてのコンポーネントの paintComponent メソッドをオーバーライドせずにコードを再利用できます。

ScreenImageクラスがこれを行います

于 2009-10-16T14:57:18.507 に答える
0

JPEG として保存するときの背景として何を期待していますか? JPEGは写真用で、透明な領域を持つことはできないため、それらを何らかの色に変換する必要があります。そのため、黒が必要です(おそらく)。画像をPNGとして保存しないのはなぜですか?または、JPEG の最初の領域を白色で塗りつぶしたい場合は、その上に描画を開始します...

于 2009-10-16T07:41:07.323 に答える