Jump to content

  • Log In with Google      Sign In   
  • Create Account


C++ Function to center image?


Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

  • You cannot reply to this topic
2 replies to this topic

#1 Dynamite Andy   Members   -  Reputation: 119

Like
0Likes
Like

Posted 05 April 2013 - 08:27 AM

Hey,
So i'm working with a game engine that was wrote by charles kelly for his book programming 2D games.

His engine is rather good, however positioning images is rather bad as it does it as x = left corner and y = top of image
I don't want to do the maths to center an image in the position x,y i'd much rather write a function for it..

there's already functions for getting the center x and center y.

 

however how would i go about writing a function so that it takes int x, int y and moves the image so that its center is x,y?

// Return center X.
    virtual float getCenterX()      {return spriteData.x + spriteData.width/2*getScale();}

    // Return center Y.
    virtual float getCenterY()      {return spriteData.y + spriteData.height/2*getScale();}

// getScale() incase needed
// Return scale factor.
    virtual float getScale()    {return spriteData.scale;}

14o6l9e.png

The image to above shows what im after..

red = current setting.

blue = what im after


Edited by Dynamite Andy, 05 April 2013 - 08:40 AM.


Sponsor:

#2 SimonForsman   Crossbones+   -  Reputation: 5965

Like
3Likes
Like

Posted 05 April 2013 - 08:45 AM

I think this should work.

virtual void setCenteredPosition(float x, float y) {
    spriteData.x = x - spriteData.width/2*getScale();
    spriteData.y = y - sprideData.height/2*getScale();
}

Edited by SimonForsman, 05 April 2013 - 08:45 AM.

I don't suffer from insanity, I'm enjoying every minute of it.
The voices in my head may not be real, but they have some good ideas!

#3 Dynamite Andy   Members   -  Reputation: 119

Like
0Likes
Like

Posted 05 April 2013 - 08:51 AM

That did the trick, thank you! :)






Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.



PARTNERS