将对象准确居中在屏幕中心

时间:2013-04-13 20:30:11

标签: c++ c geometry

我正试图将一个物体准确地居中在屏幕的中心。屏幕为320X480和

对象是25X25。我已经尝试构建的算法就是这个伪函数代码:

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

int position = (x-y)/2;

Update_X(object ,  position);

}

但是这只会将它放在X轴中心,我想让Y轴居中。我如何

那样做?有没有可以在C或C ++中使用的算法?

1 个答案:

答案 0 :(得分:4)

基本的“定心方程式”很简单:

center = (total_space - needed) / 2;

这将剩下的空间分成两半,这意味着它在左侧和右侧,或上方和下方一样多。它假定位置相对于对中的“最左边”(或Y的“上边缘”)边缘。

对于一个非常简单的示例,考虑将needed = 6的对象水平居中到total_space的14:

(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 ++中,只使用整数运算会自动获得这个,因为除法将在整数上完成。