13. august 2001 - 12:16
Der er
1 løsning
BufferedImage in Java 3D
Hello!
I\'m trying to set an background image in an 3d applet with:
BufferedImage bufferedImage;
ImageComponent2D imageComponent2D;
public Test3dWorld(SimpleUniverse simpleUniverse, Test3dKeyNavApplet test3dKeyNavApplet)
{
bufferedImage = (BufferedImage) test3dKeyNavApplet.getImage(test3dKeyNavApplet.getCodeBase(), \"the_img.gif\");
imageComponent2D = new ImageComponent2D(ImageComponent.FORMAT_RGBA, bufferedImage);
//Background background = new Background(new Color3f(Color.white));
Background background = new Background(imageComponent2D);
etc.
But I only get this message:
java.lang.ClassCastException: sun.awt.windows.WImage
Does any one know how to do this?
Best regards
Fredrik
13. august 2001 - 16:51
#1
This did the trick:
Image image = null;
image = test3dKeyNavApplet.getImage(test3dKeyNavApplet.getCodeBase(), \"img.gif\");
MediaTracker mediaTracker = new MediaTracker(test3dKeyNavApplet);
mediaTracker.addImage(image, 0);
mediaTracker.checkAll(true);
try
{
mediaTracker.waitForID(0);
}
catch (InterruptedException ie)
{
ie.printStackTrace();
}
bufferedImage = new BufferedImage(128, 128, BufferedImage.TYPE_INT_ARGB);
int[] imagefield = ((DataBufferInt) bufferedImage.getRaster().getDataBuffer()).getData();
PixelGrabber pg = new PixelGrabber(image, 0, 0, 128, 128, imagefield, 0, 128);
try
{
pg.grabPixels();
}
catch (InterruptedException e)
{
e.printStackTrace();
}
imageComponent2D = new ImageComponent2D(ImageComponent.FORMAT_RGBA, bufferedImage);
Background background = new Background(imageComponent2D);