【问题标题】:A simple way to setting a bufferedImage into a single colored pixel without placing a image into it?将 bufferedImage 设置为单个彩色像素而不将图像放入其中的简单方法?
【发布时间】:2012-07-16 09:41:49
【问题描述】:

所以我只想将缓冲图像设置为单一背景颜色有没有办法做到这一点?

【问题讨论】:

  • “有没有办法做到这一点?” 当然可以,但你为什么要这样做?这为应用程序提供了什么功能。不能有 3 种更好的方法吗?

标签: java swing jpanel jlabel bufferedimage


【解决方案1】:

您的意思是用背景颜色填充 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,由于 OP 部分缺乏信息,据我所知,我想这是预期的结果,也是正确的答案:-)
猜你喜欢
  • 1970-01-01
  • 2020-05-20
  • 1970-01-01
  • 2020-03-21
  • 2013-10-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多