我有自己的自定义控件,它为其内容维护支持图像。此缓冲区的类型为BufferedImage
.
注意力!使用背景图像是由于要求。不要教我画内在paintComponent()
目前我正在通过以下方式调整图像大小:
@Override
public void setBounds(int x, int y, int width, int height) {
if( bufferedImage == null ) {
bufferedImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);
}
else {
if( bufferedImage.getWidth() < width || bufferedImage.getHeight() < height ) {
BufferedImage newImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);
newImage.createGraphics().drawImage(bufferedImage, 0, 0, null);
bufferedImage = newImage;
}
}
super.setBounds(x, y, width, height);
}
不幸的是,这需要创建新BufferedImage
对象,因此使先前获得的Graphics
对象无效。
所以我必须有自己的方法
public Graphics2D createImageGraphics() {
if( bufferedImage != null ) {
return bufferedImage.createGraphics();
}
else {
return null;
}
}
虽然我想覆盖getGraphics()
.
是否可以调整图像大小以保存 Graphics 对象?