Я создаю редактор комиксов. Я хочу иметь возможность использовать некоторые довольно сложные настраиваемые формы для речевых шаров.
Я могу нарисовать хвост, а затем нарисовать воздушный шар, но это означает, что у меня есть контур внутри фигуры, и я хочу его только по краю.
Я предположил 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);