QPainterPath объединение фигур (один штрих)

Я пытаюсь создать союз двух фигур с 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));

вот что я получаю:

фактический результат

в то время как я хотел бы получить единственную фигуру, имеющую только один непрерывный контур, например так:

желаемый результат

Как я могу решить это?

0

Решение

Ты можешь использовать QPainterPath::simplified() удалить внутренние края:

Возвращает упрощенную версию этого пути. Это подразумевает объединение всех подпутей, которые пересекаются, и возврат пути, не содержащего пересекающихся ребер. […]

Обратите внимание, что это может испортить кривые Безье, если они есть на вашем пути, и что оно сбрасывает правило заполнения. Однако, поскольку вы не используете эти функции (по крайней мере, не в том примере, который у вас есть), simplified() должно хватить.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]