Java afbeelding component

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • irundaia
  • Registratie: Juli 2007
  • Laatst online: 05-05-2022
Hallo allemaal.

Ik ben weer wat aan het proberen met java. Nu wil ik een afbeelding van een JComponent maken wanneer er op een knop gedrukt wordt. Om dit te doen gebruik ik:

g2.getDeviceConfiguration().createCompatibleImage(this.getWidth(), this.getHeight(), Transparency.TRANSLUCENT);

Ik probeer dan een simpel cirkeltje te tekenen.

Maar wanneer ik dit naar een bestand schrijf dan is de resulterende afbeelding leeg.

Om te kijken waar dit aan ligt heb ik het ook al geprobeerd opnieuw te tekenen in een apart venster maar ook dit laat een leeg scherm zien.

Als iemand me kan helpen dan zou ik dat zeer op prijs stellen.
Han

Acties:
  • 0 Henk 'm!

  • pingwings
  • Registratie: Mei 2009
  • Laatst online: 01-06 00:15
Is een tijdje geleden dat ik wat met java gedaan hebt, maar van wat ik snel even gezien heb is dat je de afbeelding ook nog moet tonen door middel van (uit mijn hoofd): g2.drawImage method.

Acties:
  • 0 Henk 'm!

  • irundaia
  • Registratie: Juli 2007
  • Laatst online: 05-05-2022
Zo kan inderdaad de afbeelding getekend worden. Maar wat ik nu wil is van de hele component een afbeelding maken.

Ik denk dat het niet helemaal duidelijk was wat ik wilde doen. Hieronder staat de code van de hele paintComponent. De img is dan een BufferedImage deze wordt wanneer op de knop gedrukt wordt weer uitgelezen.

public void paintComponent(Graphics g)
{
Graphics2D g2 = (Graphics2D) g;

g2.setBackground(Color.WHITE);
g2.setColor(Color.BLACK);

int size = Math.min(this.getWidth(), this.getHeight()) - 1;

g2.fillOval(0, 0, size, size);
g2.setColor(Color.WHITE);

img = g2.getDeviceConfiguration().createCompatibleImage(this.getWidth(), this.getHeight(), Transparency.TRANSLUCENT);
}

Acties:
  • 0 Henk 'm!

  • Mr_Light
  • Registratie: Maart 2006
  • Niet online

Mr_Light

Zo-i-Zo de gekste.

Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;
import javax.swing.JButton;
import javax.swing.JComponent;


public class SaveComponentAsImageTest {

    /**
     * @param args
     * @throws IOException 
     */
    public static void main(String[] args) throws IOException {
        JButton button = new JButton("test");
        button.setSize(70, 30);
        
        saveComponentAsImage(button, new File("/home/michael/test.png"));
    }

    private static void saveComponentAsImage(JComponent component, File output) throws IOException {
        BufferedImage image = new BufferedImage(component.getWidth(),component.getHeight(),BufferedImage.TYPE_INT_RGB);
        component.print(image.getGraphics());
        ImageIO.write(image, "png", output);
    }

}


Zoiets?

IceManX schreef: sowieso