예제 #1
0
    def _add_points_for_line(self, start: QPointF, stop: QPointF):
        start_points = self._rect_for_point(start)
        stop_points = self._rect_for_point(stop)

        point_list = []

        if start.y() == stop.y():
            point_list.extend([
                start_points[0], stop_points[1], stop_points[2],
                start_points[3]
            ])
        elif start.y() < stop.y():
            point_list.extend(start_points[0:2])
            point_list.extend(stop_points[1:4])
            point_list.append(start_points[3])
        else:
            point_list.append(start_points[0])
            point_list.extend(stop_points[0:3])
            point_list.extend(start_points[2:4])

        self.screen_polygon = self.screen_polygon.united(
            QPolygonF.fromList(point_list))
예제 #2
0
 def _add_points_for_position(self, pos: QPointF):
     self.screen_polygon = self.screen_polygon.united(
         QPolygonF.fromList(self._rect_for_point(pos)))
예제 #3
0
 def __init__(self, *args, **kwargs):
     super(PolyLineItem, self).__init__()
     self.points = [get_point(p) for p in args]
     self.closed = kwargs.pop('closed')
     self._polygon = QPolygonF(QPolygonF.fromList(self.points))