• Advertisement

Archived

This topic is now archived and is closed to further replies.

[java] Clearing a Frame, QUICKLY

This topic is 6512 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

hi everyone, ok, I am animating an image in java, using swing''s JFrame, I create the object with vertices in an int array, then rotate them myself. When I have the final tranformed coords, I then create a GeneralPath of the points, which is then rendered using g2d.fill(shape). My problem is that if I use ClearRect(0,0,screenx,screeny); I get a huge amount of flicker in the image, do you know anyway to clear the buffer that will eliminate this flicker ? can you prove an example ? thanks. PS. dont recommend any books, I do not have any money to buy them, so any recommendations to buy XY java book, is just not needed. Thanks kosh

Share this post


Link to post
Share on other sites
Advertisement
It''s basic Double Buffering that you need.

BufferedImage DB = new BufferedImage(x,y,int Type);
Graphics DBg = DB.getGraphics();

now paint onto DBg whereever you used to paint on g. And the last thing you should do is paint
g.drawImage(0,0,DB,null);

This will transfer the image to the JFrame in one hit. The only problem is that you have to make sure the BufferedImage and Graphics are made before you start painting into them. BTW, unless you''ve overriden update(), you shouldn''t need to clear the screen, repaint() calls update(), and update() calls clear then paint().

P.S. this is all in Just Java by Peter van der Linden if you want to buy it.

Share this post


Link to post
Share on other sites
Double buffering is your answer. I did this once a long time ago and far away... (in Java), but I think how you do this is use the Component''s createImage to create an offscreen image or context....[someone will fill in the answer with the most up to date technique. Sorry]

JoeG

Share this post


Link to post
Share on other sites
Yes you can make the Image from your components, like a JFrame using JFrame.createImage();
But the tricky part is grabbing the graphics context from the newly created image using getGraphics, and using that in all your painting routines save the last drawImage(NewlyCreatedImage,0,0,null);

Share this post


Link to post
Share on other sites

  • Advertisement