0

我试图将一个对象准确地放在屏幕的中心。屏幕为 320X480 和

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

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

int position = (x-y)/2;

Update_X(object ,  position);

}

但这只会使它在 X 轴上居中,我也希望 Y 轴居中。我如何能

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

4

1 回答 1

4

基本的“居中方程”很简单:

center = (total_space - needed) / 2;

这将剩余空间分成两半,这意味着它在左边和右边一样多,或者在上面和下面。它假设位置是相对于被居中对象的“最左边”(或 Y 的“上”)边缘。

举一个非常简单的例子,考虑将一个对象水平居中,needed = 6atotal_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++ 中,仅使用整数算术就会自动得到这个,因为除法将在整数上完成。

于 2013-04-13T20:33:27.833 回答