gpt4 book ai didi

c++ - QPainterPath 形状 union (单笔划)

转载 作者:行者123 更新时间:2023-12-03 12:48:29 26 4
gpt4 key购买 nike

我正在尝试使用 QPainterPath 创建两个形状的并集来绘制漫画气球:

const int kb = 4;
QRectF br = text_->boundingRect().adjusted(-kb, -kb, kb, kb);

// anchor on bottom side
qreal y = br.bottom();
qreal x = 0.5 * (br.left() - br.right()) + br.right();
const int kw = 6;

QPainterPath pTip;
pTip.moveTo(offset_);
pTip.lineTo(x - kw, y);
pTip.lineTo(x + kw, y);
pTip.lineTo(offset_);

QPainterPath pRect;
pRect.addRoundedRect(br, 2 * kb, 2 * kb);

shape_->setPath(pTip.united(pRect));

这就是我得到的:

actual result

而我想获得一个单一的形状,只有一个连续的轮廓,如下所示:

desired result

我该如何解决这个问题?

最佳答案

您可以使用QPainterPath::simplified()删除内部边缘:

Returns a simplified version of this path. This implies merging all subpaths that intersect, and returning a path containing no intersecting edges. [...]

请注意,如果路径中有贝塞尔曲线,这可能会弄乱贝塞尔曲线,并且会重置填充规则。但是,因为您没有使用这些功能(至少在您拥有的示例中没有),所以 simplified() 应该足够了。

关于c++ - QPainterPath 形状 union (单笔划),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50299730/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com