我尝试将大小为10像素的形状定位为宽度为72像素的方形位图。
在以下代码中:
fShapeLocation是指形状的最终位置
fBitmapWidth是指位图的X宽度
cTopLeft.getX()是位图的左上角
我添加的对象应该在位图的顶部X上正好显示2/3 + 1/6(正好在形状的最后三分之一的正中心之上)。
像这样的东西(^^^是我想要的地方,[]与位图方块的四个角有关):
^^^
[ ]
[ ]
fShapeLocation=this.cTopLeft.getX()+((this.fBitmapWidth/3)*2);
fShapeLocation+=(fBitmapWidth/6)-5;
注意我试图放入多少括号以强制算术优先级。
实际上,形状出现在位图的中间。我有一种令人讨厌的怀疑,这是由java评估算术表达式的顺序引起的。我宁愿将我的代码缩短到一行,让它将形状放在正确的位置 - 任何人都可以帮助我吗? (我很抱歉我从未擅长数学)
答案 0 :(得分:0)
当你的意思是* 5时你写了-5吗?这符合你的文字。如果是这样,你的表达归结为
fShapeLocation = c.topLeft.getX()+fBitmapWidth*5/6;
除方法调用外,根本没有括号。无需更改评估顺序。