• Post Reply Bookmark Topic Watch Topic
  • New Topic
programming forums Java Mobile Certification Databases Caching Books Engineering Micro Controllers OS Languages Paradigms IDEs Build Tools Frameworks Application Servers Open Source This Site Careers Other Pie Elite all forums
this forum made possible by our volunteer staff, including ...
Marshals:
  • Campbell Ritchie
  • Jeanne Boyarsky
  • Ron McLeod
  • Paul Clapham
  • Liutauras Vilda
Sheriffs:
  • paul wheaton
  • Rob Spoor
  • Devaka Cooray
Saloon Keepers:
  • Stephan van Hulst
  • Tim Holloway
  • Carey Brown
  • Frits Walraven
  • Tim Moores
Bartenders:
  • Mikalai Zaikin

how to reverse an image?

 
Ranch Hand
Posts: 1143
5
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
i want to know how can i reverse image when it reaches to the end of JFrame.
here is my code....
 
Ranch Hand
Posts: 4632
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
you want the fish to turn around and swim the other way?

grab any image and see if this does what you want.

 
Saloon Keeper
Posts: 7585
176
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Not sure what the code does- 220 lines is too much to try to read and understand without any indication of what it does-, so what do you mean by "reverse an image"?
 
Punit Jain
Ranch Hand
Posts: 1143
5
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
yes this is what i was asking...
but can you tell me where do i implement this in my code, because my Cfish is not a container so i cannot use

setPreferredSize(new Dimension(w,h));

in my Cfish..?
 
Tim Moores
Saloon Keeper
Posts: 7585
176
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
In my reply I said that I neither know what all that code does, nor do I know what it means to "reverse an image". So I'm not in a position to tell you where in the code that I do not understand you should be doing the thing I do not understand.

Maybe you can try to explain a) what the code does, or is supposed to be doing in case it doesn't yet do what you would like it to do, and b) how you would like to alter it, including telling us what "reversing an image" means.
 
Punit Jain
Ranch Hand
Posts: 1143
5
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
okay. reverse an image i mean is i have a frame in which images is moving and when the image reached to the frame size, it get back.
i mean an image is moving in the frame, but right now when it reaches at the end of frame, it get back in the same position it is, but i want to reverse/change the position when it coming back..
the sample code which michale gave is what i m saying.
 
Bartender
Posts: 5167
11
Netbeans IDE Opera Java
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
That's called a horizontal flip.
 
Michael Dunn
Ranch Hand
Posts: 4632
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
> because my Cfish is not a container so i cannot use
> setPreferredSize(new Dimension(w,h));

that was only required for the example, as explained a couple of times previous,
without components, the panel will be set at (0,0) size, unless it is set in the program.

> but can you tell me where do i implement this in my code,

you already have the fish image moving one way, (e.g.) left-to-right, and when it
reaches the edge of the tank/panel, it reverses and goes right-to-left.

you already have the DisplayFish code for moving (e.g.) left-to-right, so now
you need to add there the 'reverseImage' painting code, so you'll end up with
if(going left-to-right) drawNormal
else drawReverse

easiest way to check is to include a class variable
int direction = 1;

so the code becomes
if(direction == 1) drawNormal
else drawReverse

and when the edge of the tank/panel is reached, you include in that code
direction *= -1;
so that direction will always be only 1 or -1
 
Punit Jain
Ranch Hand
Posts: 1143
5
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
okay i did this as you said, but not working, here is what is did....

Cfish.java



Cpoint.java


 
Michael Dunn
Ranch Hand
Posts: 4632
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
it's going to be a lot easier using a component (e.g. JLabel) for your fish.

try this (also try dragging the frame a little wider of thinner)

the fish image I'm using is pointing/swimming to the right - use a similar pointing/swimming one
 
Punit Jain
Ranch Hand
Posts: 1143
5
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
okay, Thank you...
 
Punit Jain
Ranch Hand
Posts: 1143
5
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
i apologies for restarting this thread again, but i am facing some problem, as michael dunn, i implement the code for reversing the image in my project, code is working, but there is some problem in the code,
when the fishes reaches at the end they reverse but after reversing when the come back to 0th position of x, the flow in left to right direction, top to bottom movement is not happening.
i also started a separate thread for this, but i think that thread has only a part of code, so it's harder to read there, and i apologies for this.
can you please check out what i am doing wrong, here is my Cfish.java



Thank you.
 
Punit Jain
Ranch Hand
Posts: 1143
5
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
one more problem is also here: sometimes fishes gets disappear and then again come..
i think it's a flickering problem.
how do i solve both of these issues.
 
Michael Dunn
Ranch Hand
Posts: 4632
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
> but after reversing when the come back to 0th position of x

that's why I mentioned in my earler reply it's much easier using a component,
does the code I posted work OK in reversing from the edge of the tank/panel?
 
Punit Jain
Ranch Hand
Posts: 1143
5
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
yes the code which you posted earlier to reverse image works fine, but not able to implement in my project..;-(
 
Punit Jain
Ranch Hand
Posts: 1143
5
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
i am doing exactly in the same way, but don't know why the problem is there.
the problem is when fishes are coming back after reaching the last point, the are not changing their y position.
 
Michael Dunn
Ranch Hand
Posts: 4632
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
> the are not changing their y position.

just tried your code, no images, just drawing a 10x10 rectangle (no reversing),
and there was no problem with the y position changing, but to be honest with you,
this is basic debugging - to test the calculations are working, you should/must be
able to work this basic stuff out for yourself.

your problem is probably here
else g.drawImage (fishImg,x, 0, 0, y, 0, 0, x, y,null);

this is the method signature
public abstract boolean drawImage(Image img,int dx1,int dy1,int dx2,int dy2,int sx1,int sy1,int sx2,int sy2,ImageObserver observer)
and the explanation, from the docs:
img - the specified image to be drawn. This method does nothing if img is null.
dx1 - the x coordinate of the first corner of the destination rectangle.
dy1 - the y coordinate of the first corner of the destination rectangle.
dx2 - the x coordinate of the second corner of the destination rectangle.
dy2 - the y coordinate of the second corner of the destination rectangle.
sx1 - the x coordinate of the first corner of the source rectangle.
sy1 - the y coordinate of the first corner of the source rectangle.
sx2 - the x coordinate of the second corner of the source rectangle.
sy2 - the y coordinate of the second corner of the source rectangle.
observer - object to be notified as more of the image is scaled and converted.

the ..1's are the top left corner, the ..2's are the bottom right corner,
so you should be able to work out the correct code for drawImage(..)
 
Punit Jain
Ranch Hand
Posts: 1143
5
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
okay, so you mean i need to change the x coordinates, but that i am already doing.
g.drawImage (fishImg,x, 0, 0, y, 0, 0, x, y,null);

Sorry but not getting what exactly needs to do.
 
Michael Dunn
Ranch Hand
Posts: 4632
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
you should be able to work it out from this
(needs an image, no bigger than 240,172 otherwise adjust startX/XX and startY/YY, or they'll overlap)



to make more sense, break up this line
g.drawImage (fishImg,w+startXX, startYY, startXX, h+startYY, 0, 0, w, h,this);//reversed, alongside
to
0, 0, w, h//this is the image from top-left corner (0,0) to bottom-right corner (w,h). note: this doesn't change
w+startXX, startYY, startXX, h+startYY//this is the reversing, from top-right corner to bottom-left corner

I still condider it easier to put the image in a JLabel, the reversing code doesn't change, you just set the location of the label.
 
Punit Jain
Ranch Hand
Posts: 1143
5
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
it works finally....;-)
well, sorry for asking lot of things, but i also wants to solve the collision problem can you please tell me where can i start and what i needs to do??
or should i start new thread for this?

Thank you very much Michael Dunn.
 
Michael Dunn
Ranch Hand
Posts: 4632
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
> or should i start new thread for this?

yes, a new thread will get more attention.

before doing that, search this forum, then google, for
collision detection

there's lots of sample code already posted, but don't immediately
try to apply it to your Cfish/Ctank/Cpoint project - start a new .java file
just a frame, timer for animation and a panel for drawing. in the panel's
paintComponent just draw a couple of rectangles and try to incorporate
your collision detection between the moving rectangles.

if you can't get it to work, post that code not the Cfish/Ctank/Cpoint stuff.

 
Punit Jain
Ranch Hand
Posts: 1143
5
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
okay....
thank you very much......
 
With a little knowledge, a cast iron skillet is non-stick and lasts a lifetime.
reply
    Bookmark Topic Watch Topic
  • New Topic