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?

questionAnswers(1)

yourAnswerToTheQuestion