Gracias alfinal lo tengo asi, por una parte para volcar un BufferedImage tengo puesto esto:
Código:
public static void main(....)
{
....
BufferedImage bImagen = new BufferedImage(160,200, BufferedImage.TYPE_INT_RGB);
Graphics2D g2 = bImagen.createGraphics();
g2.setColor(Color.BLUE);
g2.drawLine(50,50,100,100);
ventana.vuelcaImagen(bImagen); // Pinta primera línea
g2.setColor(Color.RED);
g2.drawLine(100,50,50,100); // Pinta segunda linea
ventana.vuelcaImagen(bImagen);
...
}
y lo hago fuera de la clase canvas porque me interesa controlar cuando volcar la imagen y que esta luego se pinte al llamar a la clase ventana que hereda de canvas que tiene el paint.
Código:
public class Ventana extends Canvas
{
private BufferedImage bImg;
public Ventana()
{
this.setBackground(Color.black);
}
public void vuelcaImagen(BufferedImage bImg)
{
this.bImg=bImg;
}
public void update(Graphics g) // update() para que no me borre el fondo.
{
paint(g);
}
public void paint(Graphics g)
{
g.drawImage(this.bImg, 0, 0, this);
}
}
Por otra parte como decía al principio también quiero capturar una zona de pantalla ya pintada en este caso como ya lo tengo guardado en BufferedImage como lo hago para capturar un trozo de ese BufferedImage y guardarlo en otro BufferedImage diferente?
Si quiero dibujar una imagen .gif dentro del main con g2.drawImage como lo hago pues con g2.drawImage(miImagenGif,posx.posy,this); no puedo ya que el this me marca un error que dice: "Cannot use this in a static context "