Russian Qt Forum

Qt => 2D и 3D графика => Тема начата: solo700 от Январь 12, 2010, 16:33



Название: QPolygonF и subtracted.
Отправлено: solo700 от Январь 12, 2010, 16:33
Проблема в следующем ... Есть два полигона poly1 и poly2 - один внешний, другой внутренний, для простоты считаем, что второй целиком входит в первый.
Получаем третий путем вычитания второго из первого ...  poly3=poly1.subtracted(poly2); ... добавляем  на сцену polyItem1=scene_add->addPolygon(poly3, QPen(Qt::red), QBrush(Qt::blue));
ну и далее отображается на QGraphicsView. Если отображать результирующий полигон без контура а только заливкой ... вроде все нормально, но с контуром -  внутренний и внешний полигон соединяются линией, что не есть хорошо. На Qt я перешел недавно и сужу по виндовой функции PolyPolygon()  -  в ней всё получается корректно (внешний и внутренний контуры не соединяются). Кто нибудь знает как это решить в Qt ?  Конечно можно результирующий полигон сделать без контуров, а поверх него отрисовать внешний и внутренний только контурами - а более кординального решения нет ? Есть ещё одна проблема ... если результирующий полигон сделать
QGraphicsItem::ItemIsMovable  и цепануть его мышкой внутри там где вырезка то он благополучно перетащиться - что тоже я считаю неправильно.




Название: Re: QPolygonF и subtracted.
Отправлено: Rcus от Январь 12, 2010, 18:27
А мне кажется соединение контуров при использовании QPolygonF::subtracted более корректным :)
В данном же случае более подойдет QPainterPath::addPolygon, QGraphicsScene::addPath а что делать с перемещением... /*shrugs*/


Название: Re: QPolygonF и subtracted.
Отправлено: solo700 от Январь 12, 2010, 19:43
Спасибо ! Попробую.


Название: Re: QPolygonF и subtracted.
Отправлено: solo700 от Январь 12, 2010, 20:22
Получилось  :)