Java缓冲区图像填充
有没有比在较大的BuffereImage上居中绘制更快的方法来实现对BuffereImage的像素填充?要将居中延迟到渲染,我喜欢这样,因为Java缓冲区图像填充,java,java-2d,bufferedimage,Java,Java 2d,Bufferedimage,有没有比在较大的BuffereImage上居中绘制更快的方法来实现对BuffereImage的像素填充?要将居中延迟到渲染,我喜欢这样,因为这是一个合适的组件: private BufferedImage image; .... @Override public void paintComponent(Graphics g) { super.paintComponent(g); Graphics2D g2d = (Graphics2D) g; g2d.translate(
这是一个合适的组件:
private BufferedImage image;
....
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2d = (Graphics2D) g;
g2d.translate(this.getWidth() / 2, this.getHeight() / 2);
g2d.translate(-image.getWidth() / 2, -image.getHeight() / 2);
g2d.drawImage(image, 0, 0, null);
}
使用BuffereImage创建图像图标,并将图标添加到JLabel。然后,您只需向标签添加边框即可获得所需的填充。BuffereImage有一个构造函数,您可以在其中指定一个WriteableRaster
在默认缓冲图像的最前端拾取,将每个像素存储在一个整数中,它使用IntegerInterleavedRaster
您可以使用ColorModel.getRGBDefault()创建ColorModel
请注意SinglePixelPackedSampleModel中的scanlineStride(最后一个参数)
另一个更简单的方法是使用BuffereImage的getSubimage方法
BufferedImage fullImage = new BufferedImage(dataImageWidth, imageHeight);
BufferedImage subImage = fullImage.getSubimage(0, 0, imageWidth, imageHeight);
填充只是为了显示还是需要创建一个新的填充图像?这主要是为了生成一个新的填充图像,而不仅仅是渲染它。
BufferedImage fullImage = new BufferedImage(dataImageWidth, imageHeight);
BufferedImage subImage = fullImage.getSubimage(0, 0, imageWidth, imageHeight);