Первое, что вы должны понять (возможно, вы уже это знаете), это то, что Graphics
- это то, где вы пишете в , а не то, откуда вы пишете. В большинстве случаев это экран вашего компьютера, например, когда вы используете Swing.
Вы также можете рисовать непосредственно на пустое изображение, написав в Graphics
, полученном из BufferedImage.getGraphics :
Image myImage = new BufferedImage(...);
Graphics graphImage = myImage.getGraphics();
graphImage.setColor(Color.BLUE);
graphImage.fillPolygon(...); // set some blue pixels inside the BufferedImage
Затем вы можете преобразовать это изображение в любой формат изображения.
Глупый пример, который вам не следует делать (см. Ниже истинную процедуру Swing):
Вы можете нарисовать свое изображение в компоненте Swing
public class MyJPanel extends Panel {
@Override
public void paintComponent(Graphics g) { // g is your screen
...
g.drawImage(myImage,...); // draw your image to the screen
...
}
}
Стандартная процедура Swing - запись прямо на экран:
public class MyJPanel extends Panel {
@Override
public void paintComponent(Graphics g) { // g is your screen
...
g.fillPolygon(...); // directly writes your pixels to the screen buffer
...
}
}
(Комментарий для придирки: не совсем верно, что вы пишете напрямую в экранный буфер, поскольку Swing имеет двойную буферизацию.)