2012-07-16 28 views
1

所以我只是想設置一個緩衝的圖像成一個單一的背景顏色有沒有辦法做到這一點?將緩衝圖像設置爲單個彩色像素而不將圖像置入其中的簡單方法?

+1

*「有沒有辦法做到這一點?」*當然,但爲什麼你想?該功能提供給應用程序的是什麼功能。那不可能以更好的方式完成? – 2012-07-16 23:40:03

+0

[將BufferedImage設置爲Java中的顏色]的可能重複(https://stackoverflow.com/questions/1440750/set-bufferedimage-to-be-a-color-in-java) – Suma 2017-11-17 21:00:13

回答

6

你的意思是用背景色填充BufferedImage?如果是這樣,這裏是一個如何執行此操作的示例:

import java.awt.Color; 
import java.awt.Graphics2D; 
import java.awt.image.BufferedImage; 

import javax.swing.ImageIcon; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 
import javax.swing.SwingUtilities; 

public class TestBufferedImage { 

    private BufferedImage buffer; 

    protected BufferedImage getBuffer() { 
     if (buffer == null) { 
      buffer = new BufferedImage(400, 300, BufferedImage.TYPE_INT_RGB); 
      Graphics2D g = buffer.createGraphics(); 
      g.setColor(Color.BLUE); 
      g.fillRect(0, 0, buffer.getWidth(), buffer.getHeight()); 
      g.dispose(); 
     } 
     return buffer; 
    } 

    protected void initUI() { 
     final JFrame frame = new JFrame(); 
     frame.setTitle(TestBufferedImage.class.getSimpleName()); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     JLabel image = new JLabel(new ImageIcon(getBuffer())); 
     frame.add(image); 
     frame.pack(); 
     frame.setVisible(true); 
    } 

    public static void main(String[] args) { 
     SwingUtilities.invokeLater(new Runnable() { 
      @Override 
      public void run() { 
       TestBufferedImage test = new TestBufferedImage(); 
       test.initUI(); 
      } 
     }); 
    } 

} 
+1

+1,因爲存在從OP部分缺乏信息,據我瞭解,我猜這是預期的,是正確的答案:-) – 2012-07-16 16:16:10

相關問題