2012-07-16 77 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

相关问题