Я пытаюсь создать союз двух фигур с 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));
вот что я получаю:
в то время как я хотел бы получить единственную фигуру, имеющую только один непрерывный контур, например так:
Как я могу решить это?
Ты можешь использовать QPainterPath::simplified()
удалить внутренние края:
Возвращает упрощенную версию этого пути. Это подразумевает объединение всех подпутей, которые пересекаются, и возврат пути, не содержащего пересекающихся ребер. […]
Обратите внимание, что это может испортить кривые Безье, если они есть на вашем пути, и что оно сбрасывает правило заполнения. Однако, поскольку вы не используете эти функции (по крайней мере, не в том примере, который у вас есть), simplified()
должно хватить.
Других решений пока нет …