2013-04-13 29 views
0

我想将一个对象完全置于屏幕中央。屏幕是320X480和将一个对象完全置于屏幕中央

对象是25X25。我已经试图建立的算法是这样的伪功能代码:

void (int x, int y, int object){ 

int position = (x-y)/2; 

Update_X(object , position); 

} 

但这只会中心,它在X轴,我想也有Y轴居中。我如何

这样做?有什么算法可以在C或C++中使用吗?

+1

'(screenWidth-objWidth)/ 2'和'(screenHeight-objHeight)/ 2'应该能够获得通常需要的左上角。 – chris

+0

(screenWidth - objWidth)/ 2 = x和(screenHeight - objHeight)/ 2 = y对不对? –

+0

是的。如果有帮助,你可以考虑'screenWidth/2 - objWidth/2'。第一部分水平放置屏幕的中心,第二部分放在对象的左半部分,以获得左侧的位置。 – chris

回答

4

基本的“中心式”很简单:

center = (total_space - needed)/2; 

这就将剩余空间的一半,这意味着它在左边,右边,或上下一样多。它假定位置相对于居中对象的“最左边”(或“Y”上边缘)。

对于一个非常simpe例如,考虑水平定心的对象与needed = 6到14的total_space

(14 - 6)/2 = 4 

所以,当试图图形显示:

needed = 6 
    / \ 
|----XXXXXX----| The 6 X:s are centered, 
|    | with 4 dashes on either 
\   / side. The total space 
    \  / between the |:s is 14. 
    \  /
total_space = 14 

这是一个维度仅所以你必须计算两次:一次为X和一次为Y.这两者应该是相互独立的应该由于它们是尺寸;那是什么尺寸呢! :)

因此,封堵你的价值观,我们得到:

center_x = (320 - 25)/2 = 147 

center_y = (480 - 25)/2 = 227 

我舍去;在两种情况下都不能被整除,所以你将不得不选择舍入方法。在C和C++中,使用整数算术会自动得到这个结果,因为除法将在整数上完成。

+0

这使得很多感觉! :D谢谢 –

+0

C或C++中最好的四舍五入方法是什么? –

+0

类似于:(num> 0.0)? floor(num + 0.5):ceil(num - 0.5); ?也许 –