【发布时间】:2016-09-02 05:24:48
【问题描述】:
我正在使用 QGraphicsPathItems 绘制半透明路径,但是当两条路径重叠时出现问题,它们变得更加不透明,但我希望它们保持相同级别的透明度,无论有多少路径重叠。
在左侧两条独立的路径,变得更加不透明。在右边,单条路径穿过自身,相同级别的透明度,这是我想通过多条路径实现的效果。
有没有可能实现这样的目标?
【问题讨论】:
-
我认为这是不可能的。每个项目只是将自己绘制在其他所有项目之上。它不知道在它下面绘制了什么项目。此外,你想要的与半透明的想法相矛盾——如果下面的项目完全被顶部的项目覆盖,那么顶部的项目就会有效地隐藏它,这与半透明的想法背道而驰。只需让您的项目不透明即可。
-
实际上,您可以将这些项目设为其他项目的子项目吗?项目本身是完全不透明的,但绘制它们的父项目平面是半透明的。不过,我不知道你能不能拥有它。这才是你真正想要的,对吧?
-
感谢@sashoalm 的回复。我已经尝试创建自定义 QGraphicsItems 来绘制它自己的路径,但效果与上面相同,即使设置了您共享的链接上解释的 CompositionMode,也尝试了不同的其他组合模式,但效果完全奇怪(改变背景的颜色和类似的颜色)。我正在考虑检查路径是否重叠,如果是,将新路径作为子路径添加到已经存在的路径中,不知道这是否可行。另外,我需要能够单独擦除路径,不确定它是否适用于子路径。
-
我的第二条评论呢?是否有可能使它们完全不透明但成为半透明父层项目的子级?
标签: c++ qt qgraphicsscene qgraphicsitem