• FEATURED

View more

View more

View more

### Image of the Day Submit

IOTD | Top Screenshots

### The latest, straight to your Inbox.

Subscribe to GameDev.net Direct to receive the latest updates and exclusive content.

# 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.

2 replies to this topic

### #1Dynamite Andy  Members

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;}


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.

### #2SimonForsman  Members

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!

### #3Dynamite Andy  Members

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.