我想将一个对象完全置于屏幕中央。屏幕是320X480和将一个对象完全置于屏幕中央
对象是25X25。我已经试图建立的算法是这样的伪功能代码:
void (int x, int y, int object){
int position = (x-y)/2;
Update_X(object , position);
}
但这只会中心,它在X轴,我想也有Y轴居中。我如何
这样做?有什么算法可以在C或C++中使用吗?
我想将一个对象完全置于屏幕中央。屏幕是320X480和将一个对象完全置于屏幕中央
对象是25X25。我已经试图建立的算法是这样的伪功能代码:
void (int x, int y, int object){
int position = (x-y)/2;
Update_X(object , position);
}
但这只会中心,它在X轴,我想也有Y轴居中。我如何
这样做?有什么算法可以在C或C++中使用吗?
基本的“中心式”很简单:
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++中,使用整数算术会自动得到这个结果,因为除法将在整数上完成。
这使得很多感觉! :D谢谢 –
C或C++中最好的四舍五入方法是什么? –
类似于:(num> 0.0)? floor(num + 0.5):ceil(num - 0.5); ?也许 –
'(screenWidth-objWidth)/ 2'和'(screenHeight-objHeight)/ 2'应该能够获得通常需要的左上角。 – chris
(screenWidth - objWidth)/ 2 = x和(screenHeight - objHeight)/ 2 = y对不对? –
是的。如果有帮助,你可以考虑'screenWidth/2 - objWidth/2'。第一部分水平放置屏幕的中心,第二部分放在对象的左半部分,以获得左侧的位置。 – chris