Ver Mensaje Individual
  #2 (permalink)  
Antiguo 16/05/2012, 09:26
Avatar de rodno
rodno
 
Fecha de Ingreso: enero-2009
Ubicación: En algun lugar de Cuba
Mensajes: 426
Antigüedad: 15 años, 3 meses
Puntos: 43
Respuesta: Convertir un Canvas en Imagen

Buenas, ya pude solucionar mi situación,

Explico, yo tengo una clase llamada lienzo que extiende de Canvas, donde en ella realizo dibujos, rectangulos, circulos, lineas, texto, o tras cosas mas, el problema que tenia era que al pasarle un objeto creado de esta clase lienzo, a la funcion que anteriormente puesta, me convertia esto en una imagen, y mediante otras procedimientos se creaba un archivo imagen.png,

File file = new File("d:\\imagen.png");
try {
ImageIO.write(canvasToImage(lienzo), "png", file);
} catch (IOException ex) {
Logger.getLogger(DesingCut.class.getName()).log(Le vel.SEVERE, null, ex);
}

, el creaba el archivo imagen muy bien, pero todo era con fondo en negro,

Solucion a la situación:

pintar un rectangulo relleno con el color de fondo deseado, en mi caso blanco, del tamaño completo del lienzo, esto va en el metodo de la clase Linezo

@Override
public void paint(Graphics g)
{
((Graphics2D)g).setColor(Color.white);
((Graphics2D)g).fillRect(0, 0,getWidth(), getHeight());
/** Aqui realizo los otros dibujos */
}

despues en otro lugar:


File file = new File("d:\\imagen.png");
try {
ImageIO.write(canvasToImage(lienzo), "png", file);
} catch (IOException ex) {
Logger.getLogger(DesingCut.class.getName()).log(Le vel.SEVERE, null, ex);
}

y se obtuve el resultado esperado
saludos
__________________
"No te preocupes si no funciona bien. Si todo lo hiciera, no tendrías trabajo."
"El problema no es no saber, sino no saber quién sabe"
..::Con Karma se piensa mejor::..