Как объединить QPainterPaths - PullRequest
4 голосов
/ 20 января 2012

Мне нужно «объединить» два QPainterPath вместе.Проблема в том, что они всегда кажутся двумя разными путями.

Что мне нужно, так это чтобы слияние действительно стало таким же, как если бы был построен один (из сложного многоугольника или сложного набора линий), без каких-либо артефактов внутренней линии или подпути из-за того факта, что ониранее были два разных пути.Это кажется довольно простой и нормальной задачей, но я не могу понять, как это сделать.

Ответы [ 3 ]

2 голосов
/ 17 апреля 2014

Это может помочь сначала объединить пути, используя перегруженный оператор +, а затем вызвать simplified() для него. QPainterPath reference

По крайней мере, это решило проблему для меня, когда у меня было два пути из двух квадратов, у которых было одно общее ребро, и без вызова simplified() это все равно было бы двумя квадратамино с ним будет один прямоугольник, как и ожидалось.

1 голос
/ 24 ноября 2012

Если вы начинаете с двух путей p1 и p2, каждый из которых содержит один подпуть, то:

joined = p1.toSubpathPolygons()[0] + p2.toSubpathPolygons()[0]
p3 = QPainterPath()
p3.addPolygon(joined)

Вы также можете изменить направление соединения каждого пути, используя path.toReversed (). (извините, это синтаксис Python, но он должен быть почти таким же для C ++)

1 голос
/ 20 января 2012

Я бы сказал, что метод united(QPainterPath) (класс QPainterPath) - это тот, который вы ищете, если вы еще не пробовали его. Или, может быть, subtracted(QPainterPath) или intersected(QPainterPath), в зависимости от того, чего вы пытаетесь достичь.

Не могли бы вы дать нам более подробную информацию о том, что вы уже пробовали?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...