Hi !
Featured games (90)
games approved by the League of Dukes
Games in Showcase (789)
Games in Android Showcase (234)
games submitted by our members
Games in WIP (864)
games currently in development
News: Read the Java Gaming Resources, or peek at the official Java tutorials
    Home     Help   Search   Login   Register   
Pages: [1]
  ignore  |  Print  
  Fastest way to draw only a part of an image  (Read 7267 times)
0 Members and 1 Guest are viewing this topic.
Offline stefanha

Senior Newbie

I love YaBB 1G - SP1!

« Posted 2002-12-21 04:14:52 »

I'm wondering what the fastest way to draw only a portion of an Image is.  Right now I am using g.drawImage ( Image image, int sx1, int sy1, int sx2, int sy2, int dx1, int dy1, int dx2, int dy2, ImageObserver observer ).  However, this function can also do scaling, so I'm not sure if it is optimized to deal with the case when no scaling has to be done.

The other way I know is to do g.setClip (...) and then g.drawImage().  But then I have create a compatible Graphics object from g, as to not screw up the original clipping area.  I think that might slow things down...

Which way is faster?

from, Stefan
Offline stefanha

Senior Newbie

I love YaBB 1G - SP1!

« Reply #1 - Posted 2002-12-24 04:19:20 »

Okay, I've done some testing and figured out the fastest way to do it.  Both the scaled drawImage() and g.create() are not the fastest.  The best way to do it is:
paint (Graphics g)
Shape oldClip = g.getClip ();
g.setClip (x, y, width, height);
g.drawImage (sx, sy, x - sx, y - sy, null );
g.setClip (oldClip);

The cool thing about this approach is that if you have a loop that renders several pieces from different images, you can take the "Shape oldClip = g.getClip()" and "g.setClip (oldClip)" out of the loop and only call them once the loop is done, saving yourself some processor cycles.

from, Stefan
Offline pepe

Junior Devvie

Nothing unreal exists

« Reply #2 - Posted 2003-01-03 08:04:47 »

i seem to recall from an old thread of the previous board that setClip() creates garbage.
Can anyone confirm?

Home page:
GoSub: java2D gamechmark
Games published by our own members! Check 'em out!
Legends of Yore - The Casual Retro Roguelike
Offline cknoll

Junior Devvie

Flame On!

« Reply #3 - Posted 2003-01-03 21:51:39 »

I hae used set clip to redraw various sprites on a game board and did not notice gc pauses due to excessive garbage collecton (and the game was running at 60fps adn there were about 5 set clips per frame).

Pages: [1]
  ignore  |  Print  

hadezbladez (2631 views)
2018-11-16 13:46:03

hadezbladez (950 views)
2018-11-16 13:41:33

hadezbladez (2590 views)
2018-11-16 13:35:35

hadezbladez (510 views)
2018-11-16 13:32:03

EgonOlsen (3744 views)
2018-06-10 19:43:48

EgonOlsen (4140 views)
2018-06-10 19:43:44

EgonOlsen (2496 views)
2018-06-10 19:43:20

DesertCoockie (3304 views)
2018-05-13 18:23:11

nelsongames (3400 views)
2018-04-24 18:15:36

nelsongames (4378 views)
2018-04-24 18:14:32
Java Gaming Resources
by philfrei
2019-05-14 16:15:13

Deployment and Packaging
by philfrei
2019-05-08 15:15:36

Deployment and Packaging
by philfrei
2019-05-08 15:13:34

Deployment and Packaging
by philfrei
2019-02-17 20:25:53

Deployment and Packaging
by mudlee
2018-08-22 18:09:50

Java Gaming Resources
by gouessej
2018-08-22 08:19:41

Deployment and Packaging
by gouessej
2018-08-22 08:04:08

Deployment and Packaging
by gouessej
2018-08-22 08:03:45 is not responsible for the content posted by its members, including references to external websites, and other references that may or may not have a relation with our primarily gaming and game production oriented community. inquiries and complaints can be sent via email to the info‑account of the company managing the website of java‑
Powered by MySQL Powered by PHP Powered by SMF 1.1.18 | SMF © 2013, Simple Machines | Managed by Enhanced Four Valid XHTML 1.0! Valid CSS!