在 libchamplain 中控制 z 顺序
controlling z-order in libchamplain
我怀疑解决方案在 libchamplain 之内,但我也在这里问,以防有人知道出路。
在一个小的 Python-Gtk3 程序中,我使用 libchamplain select 一个位置,并指示一个维度。
为此,我为用户提供了一个圆圈,他们可以使用中心和通过两个标记来控制它。
当您拖动中心时,'through-point' 会停留在原来的位置,并且圆会相应地进行调整。当您拖动 'through-point' 时,您正在控制圆的半径。当您拖动圆圈时,两个标记会随之移动。
问题出在第三个选项上,因为看起来libchamplain坚持把物体按z顺序拉到最前面,所以我再也无法到达中心点了。
我打开了一个issue there, providing the source code of my python program。我的解决方案非常肮脏,每次拖动圆圈时都删除标记并重新创建它们。新标记结果在圆圈前面,这是我想要的,但不是我想要的方式。
我想知道在当前版本的 libchamplain 中是否有人有更简洁的解决方案。
显然,libchamplain 0.12 不支持 z-position
属性:层中标记的 z 顺序由它们在层子列表中出现的顺序决定。这最初与标记添加到图层的顺序相同。
真正的混乱(从我的角度来看)是在您单击一个对象时开始的,因为在那一刻 libchamplain 将该对象移动到其容器的子项的末尾,即在 z 的顶部-订购。
图书馆馆长 Jiří Techet 建议构建我自己的标记作为最佳解决方案,如果我坚持以这种方式滥用 API,请这样做:
self.layer.set_child_below_sibling(self.marker_circle)
我怀疑解决方案在 libchamplain 之内,但我也在这里问,以防有人知道出路。
在一个小的 Python-Gtk3 程序中,我使用 libchamplain select 一个位置,并指示一个维度。
为此,我为用户提供了一个圆圈,他们可以使用中心和通过两个标记来控制它。
当您拖动中心时,'through-point' 会停留在原来的位置,并且圆会相应地进行调整。当您拖动 'through-point' 时,您正在控制圆的半径。当您拖动圆圈时,两个标记会随之移动。
问题出在第三个选项上,因为看起来libchamplain坚持把物体按z顺序拉到最前面,所以我再也无法到达中心点了。
我打开了一个issue there, providing the source code of my python program。我的解决方案非常肮脏,每次拖动圆圈时都删除标记并重新创建它们。新标记结果在圆圈前面,这是我想要的,但不是我想要的方式。
我想知道在当前版本的 libchamplain 中是否有人有更简洁的解决方案。
显然,libchamplain 0.12 不支持 z-position
属性:层中标记的 z 顺序由它们在层子列表中出现的顺序决定。这最初与标记添加到图层的顺序相同。
真正的混乱(从我的角度来看)是在您单击一个对象时开始的,因为在那一刻 libchamplain 将该对象移动到其容器的子项的末尾,即在 z 的顶部-订购。
图书馆馆长 Jiří Techet 建议构建我自己的标记作为最佳解决方案,如果我坚持以这种方式滥用 API,请这样做:
self.layer.set_child_below_sibling(self.marker_circle)