我在渲染树中有一个节点,它根据它的子节点计算它的高度。位置和大小值允许为浮点值,舍入在渲染时完成。
def compute_size(self):
# Invokes compute_size() of child nodes.
super(InlineBoxNode, self).compute_size()
# Iterate over all children and compute the current nodes
# height.
self.h = 0
for node in self.children:
self.h += node.h
我面临的问题如下:假设两个节点是上述代码节点的子节点。两个 child 的高度都是 10.5
。子节点位于它们各自的前一个节点下方,即节点二将放置在 y=10.5
处。在渲染时 10.5
变为 11
。第二个节点现在位于 y=11
并且具有 h=11
,即它的底部边缘位于 22
,而不是 21
。 (示范见下图)
我认为这个问题可以通过始终四舍五入(即向下相邻整数值)来解决,但是语义是否正确?
编辑
我刚刚意识到,即使是四舍五入地板也不能解决这个问题。第二个节点的底边现在位于 20
,但 21
是正确的。
最佳答案
因此内部表示是 float 的,实际布局以像素为单位。必须涉及某种舍入。然后在加法前做同样的舍入操作,例如
self.h += int(node.h)
在你的情况下。
关于python - 浮点布局和舍入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14283143/