Hallo,
ich beschäftige mich momentan ein wenig mit Quellcode, den Notch zur freien Verfügung gestellt hat, genauer gesagt seinem Spiel "metagun". Zum laden der verwendeten BufferedImage's verwendet er folgende Funktion:
Ich bin mir jetzt nicht so ganz sicher, ob ich das ganze richtig verstehe. Er lädt zunächst ganz normal mittels ImageIO.read das entsprechende Bild. Anschließend erzeugt er ein weiteres BufferedImage derselben Größe, jedoch Transparent. Von diesem neuen BufferedImage besorgt er sich das entsprechende Graphics-object und wendet darauf drawImage mit dem zuerst geladenen Image an. Was genau bewirkt das? Konvertiert er so das zuerst geladene Image von TYPE_INT_RGB zu TYPE_INT_ARGB oder welcher Sinn steht dahinter? Es vermute es hat irgendwas mit den Transparenzen zu tun, um z.B. pixelgenaue Kollisionsdetektion implementieren zu können...?!
Freue mich auf eure Antworten!
Grüße
ich beschäftige mich momentan ein wenig mit Quellcode, den Notch zur freien Verfügung gestellt hat, genauer gesagt seinem Spiel "metagun". Zum laden der verwendeten BufferedImage's verwendet er folgende Funktion:
Java:
public static BufferedImage load(String imageName)
{
BufferedImage image;
try
{
image = ImageIO.read(Images.class.getResourceAsStream(imageName));
BufferedImage img = new BufferedImage(image.getWidth(), image.getHeight(), BufferedImage.TYPE_INT_ARGB);
Graphics g = img.getGraphics();
g.drawImage(image, 0, 0, null);
g.dispose();
image = img;
}
catch (IOException e)
{
e.printStackTrace();
return null;
}
return image;
}
Ich bin mir jetzt nicht so ganz sicher, ob ich das ganze richtig verstehe. Er lädt zunächst ganz normal mittels ImageIO.read das entsprechende Bild. Anschließend erzeugt er ein weiteres BufferedImage derselben Größe, jedoch Transparent. Von diesem neuen BufferedImage besorgt er sich das entsprechende Graphics-object und wendet darauf drawImage mit dem zuerst geladenen Image an. Was genau bewirkt das? Konvertiert er so das zuerst geladene Image von TYPE_INT_RGB zu TYPE_INT_ARGB oder welcher Sinn steht dahinter? Es vermute es hat irgendwas mit den Transparenzen zu tun, um z.B. pixelgenaue Kollisionsdetektion implementieren zu können...?!
Freue mich auf eure Antworten!
Grüße