zmiana Graphics2D w tablice pixli

0

Czesc, nie potrafie zamienic Graphics2D na ktroym mam narysowane kolo w tablice pixli, ktora chce nastepnie modyfikowac. Probowalem cos:

    public void paint(Graphics g){
        BufferedImage bi = new BufferedImage(200,200,BufferedImage.TYPE_INT_RGB);
        Graphics2D g2D = (Graphics2D)g;     
        g2D = bi.createGraphics();
        Ellipse2D kolo = new Ellipse2D.Double(10.0, 10.0, 200.0, 200.0);
        g2D.setColor(Color.red);
        g2D.fill(kolo);
    }

ale po dodaniu bufora w ogóle nic mi nie rysuje. A tak w ogóle top jestem zielony jesli chodzi ografike. Jesli ktos by mi zapodal kawalek kodu i objasnil jak zrobic ta tablice, pobrac piksel i zamienic go na inny kolor to byl bym wdzieczny.

Pozdrawiam!

0

Rysujesz w BufferedImage, ale nie przepisujesz jego zawartości do zmiennej g. W tym celu należy użyć metody drawImage(Image image, int x, int y, ImageObserver io) klasy Graphics:

public void paint(Graphics g){
                BufferedImage bi = new BufferedImage(200,200,BufferedImage.TYPE_INT_RGB);
                Graphics2D g2D = (Graphics2D)g;               
                //g2D = bi.createGraphics();
                Graphics2D g2DBI = bi.createGraphics();
                Ellipse2D kolo = new Ellipse2D.Double(10.0, 10.0, 200.0, 200.0);
                g2DBI.setColor(Color.red);
                g2DBI.fill(kolo);
                g2D.drawImage(g2DBI, 0, 0, null);
}
0

a jak przekasztalcic ten bufor w atblice i piksle pozamieniac ??

0

jesli rozszerzasz JComponent (w szczegolnosci JPanel) to nie paint tylko paintComponent!!! i koniecznie super.paintComponent();

pozdrawiam

0

no dobra zmienilem na paintComponentm ale to co podal Kozołek mi nie działało, znaczy nic się nie rysowało

public void paintComponent(Graphics g){
    super.paintComponent(g);

    Graphics2D g2D = (Graphics2D)g;

    Ellipse2D kolo = new Ellipse2D.Double(10.0, 10.0, 200.0, 200.0);
    g2D.setColor(Color.red);
    g2D.fill(kolo);     
}
0

a ten kod Ci dziala?

0

tak ten wklejony nad Twoim postem dziala

0

juz sobie poradzilem, oto kod:

BufferedImage bi = new BufferedImage(dl,szer,BufferedImage.TYPE_INT_ARGB);
Graphics2D g2D = bi.createGraphics();

Ellipse2D kolo = new Ellipse2D.Double(10.0, 10.0, 200.0, 200.0);
g2D.setColor(Color.red);
g2D.fill(kolo); 

g.drawImage(bi,0,0,null);

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0