Основное «центрирование уравнения» просто:
center = (total_space - needed)/2;
Это делит оставшееся пространство пополам, а это означает, что это так же слева, как справа, или выше и ниже. Он предполагает, что позиция относится к крайнему краю «левого» (или «верхнего») Y центра.
Для очень SimPE примера рассмотрим горизонтально центрирования объекта с 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++ просто используя целочисленную арифметику, вы получите это автоматически, так как разделение будет выполняться с целыми числами.
'(screenWidth - objWidth)/2' и' (screenHeight - objHeight)/2' должен работать, чтобы получить обычно необходимый верхний левый угол. – chris
(screenWidth - objWidth)/2 = x и (screenHeight - objHeight)/2 = y right? –
Да. Если это помогает, вы можете думать о 'screenWidth/2 - objWidth/2'. Первая часть получает центр экрана по горизонтали, а вторая часть идет влево на половину объекта, чтобы попасть туда, где должна стоять левая сторона. – chris