У меня есть собственный пользовательский элемент управления, который поддерживает фоновое изображение для его содержимого. Этот буфер имеет тип BufferedImage
.Как изменить размер 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?
Любая причина для поддержания вашего собственного буфера в то время как свинг уже обеспечивает двойную буферизацию? –
Чтобы лучше помочь, опубликуйте [SSCCE] (http://sscce.org/). –
@Guillaume как его активировать? –