Nie można przekonwertować bieżących danych płótna na obraz w Javie
Mam prostą aplikację, która pozwala użytkownikowi rysować w kontrolce płótna.
Teraz chcę przekształcić to płótno w obraz. Oto mój kod.
public void paint(Graphics g)
{
//super.paint(g);
Graphics2D draw = (Graphics2D) g;
if(this.is_beginning || this.to_save)
{
draw.setColor(Color.white);
draw.fillRect(0, 0, this.getWidth(), this.getHeight());
this.is_beginning= false;
}
if(this.m_alzada)
{
draw.setColor(Color.red);
draw.drawLine(uX, uY, x, y);
}
}
I to jest moja metoda zapisywania obrazu.
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
int w = canvas1.getWidth();
int h = canvas1.getHeight();
int type = BufferedImage.TYPE_INT_BGR;
BufferedImage image = new BufferedImage(w,h,type);
Graphics2D g2 = image.createGraphics();
canvas1.to_save = true;
canvas1.paint(g2);
try {
ImageIO.write(image, "png", new File("C:/Users/Uriel/Desktop/ejemplo.png"));
} catch (IOException ex) {
Logger.getLogger(main.class.getName()).log(Level.SEVERE, null, ex);
}
}
Wszystko to skutkuje pustym obrazem, wiem jak działa metoda malowania i zdaję sobie sprawę, że jest tam, gdzie jest mój problem. Ale jak mogę narysować wszystko, co użytkownik narysował już w metodzie malowania?
Przepraszam za mój zły angielski, jestem z Meksyku. Tak przy okazji.
Chciałbym wiedzieć, czy istnieje coś takiego, kiedy pracujesz z Canvas i HTML5, a otrzymasz matrycę z informacjami RGB każdego piksela w płótnie. Czy można to zrobić za pomocą komponentu canvas w JAVA?