Я создаю редактор комиксов. Я хочу иметь возможность использовать довольно сложные настраиваемые формы для речевых шаров.
Я могу нарисовать хвост, а затем нарисовать воздушный шар, но это означает, что у меня есть контур внутри формы, и я хочу его только по краю.
Я предположил, что QPainterPath::simplified()
решит проблему, но, похоже, ничего не делает.
В настоящее время моя лучшая идея состоит в том, чтобы нарисовать фигуру с толстым контуром, а затем снова нарисовать ее без контура, но я не думаю, что это будет работать для контуров "нулевой ширины".
Оказывается, QPainterPath::simplified()
действительно работает. Это зависит от того, рисую ли я по часовой стрелке или против часовой стрелки (я считаю, что это работает при рисовании по часовой стрелке), что, я полагаю, зависит от того, как работает Qt Winding Fill.
// create a path representing the bubble and its "tail"
QPainterPath tail = tail.shape();
tail.addPath(bubble.shape());
tail.setFillRule(Qt::WindingFill);
painter->drawPath(tail.simplified);
Я могу думать о двух возможных решениях здесь:
Первый метод позволит использовать альтернативные стили линий (пунктирные или вигглые линии), но последний позволит слегка очертить "контур", чтобы он стал толще вокруг некоторых краев и стал более тонким вокруг других.