Exemplo n.º 1
0
    def paintEvent(self, e):
        """ Draws the color bar and arrow """
        if self.item():
            painter = QPainter(self)

            # Draws the color bar
            painter.setPen(Qt.NoPen)
            rect = QRect(0, 0, self.COLOR_BAR_WIDTH, self.COLOR_BAR_HEIGHT)
            painter.fillRect(rect,
                             self.item().data(renderSetupRoles.NODE_COLOR_BAR))
            oldBrush = painter.brush()

            if self.item().type(
            ) == renderSetup.RENDER_OVERRIDE_TYPE and self.item(
            ).isLocalRender():
                diameter = rect.width() - 2
                rect2 = QRect(rect.x() + 1,
                              rect.y() + (rect.height() - diameter) / 2,
                              diameter, diameter)
                brush = painter.brush()
                pen = painter.pen()
                hints = painter.renderHints()

                painter.setRenderHint(QPainter.Antialiasing, on=True)
                painter.setPen(Qt.NoPen)
                painter.setBrush(
                    QBrush(QColor(67, 79, 70), style=Qt.SolidPattern))
                painter.drawEllipse(rect2)

                painter.setRenderHints(hints)
                painter.setPen(pen)
                painter.setBrush(brush)

            # Draws the arrow
            painter.setBrush(self.ARROW_COLOR)
            if self.arrowPoints == BaseDelegate.EXPANDED_ARROW:
                painter.translate(self.EXPANDED_ARROW_OFFSET, 0.0)
            else:
                painter.translate(self.COLLAPSED_ARROW_OFFSET, 0.0)
            painter.drawPolygon(self.arrowPoints)
            painter.setBrush(oldBrush)

            # Draws the node type text
            painter.setPen(QPen(self.item().data(Qt.TextColorRole)))
            text = self.item().data(renderSetupRoles.NODE_TYPE_STR)
            painter.setFont(self.item().data(Qt.FontRole))
            painter.drawText(self.NODE_TYPE_TEXT_RECT, text,
                             QTextOption(Qt.AlignLeft | Qt.AlignVCenter))
Exemplo n.º 2
0
    def paintEvent(self, event):

        painter = QPainter(self)
        reset_brush = painter.brush()

        for figure in self.__figures:
            if not isinstance(figure, Figure):
                continue

            if isinstance(figure, Rectangle):
                painter.setBrush(QBrush(Qt.red))
                painter.drawRect(figure.x, figure.y, figure.width,
                                 figure.height)
                continue

            if isinstance(figure, Ellipse):  # ждёт прямоугольник
                painter.setBrush(QBrush(Qt.green))
                painter.drawEllipse(figure.x, figure.y, figure.width,
                                    figure.height)
                continue

            if isinstance(figure, CloseFigure):
                painter.setBrush(QBrush(Qt.blue))

                points = []
                for point in figure:
                    points.append(QPoint(point['x'], point['y']))
                painter.drawPolygon(points)
                continue
Exemplo n.º 3
0
    def paintEvent(
            self, event
    ):  # c нуля перезаписываем paintEvent, который есть в родителе

        painter = QPainter(self)
        reset_brush = painter.brush()

        for figure in self.__figures:
            if not isinstance(figure, Figure):
                continue

            if isinstance(figure, Rectangle):
                painter.setBrush(QBrush(Qt.red))
                painter.drawRect(
                    figure.x, figure.y, figure.width, figure.height
                )  # не нужны круглые скобки, так как это свойства (property)
                continue

            if isinstance(figure, Ellipse):
                painter.setBrush(QBrush(Qt.green))
                painter.drawEllipse(figure.x, figure.y, figure.width,
                                    figure.height)
                continue

            if isinstance(figure, CloseFigure):
                painter.setBrush(QBrush(Qt.blue))
                points = []  # точки, которые будем передавать в drawPolygon
                # d - это список. Каждый поинт - отдельный словарь
                for point in figure.d:
                    points.append(QPoint(point['x'], point['y']))
                painter.drawPolygon(points)
                continue
Exemplo n.º 4
0
    def paintEvent(self, e):
        p = QPainter(self)

        brush = QBrush(QColor(0, 0, 0))
        p.setBrush(brush)

        self.draw_grid(p)
        wall_pen = QPen()
        wall_pen.setColor(QColor(0, 0, 0))
        wall_pen.setWidth(3)
        p.setPen(wall_pen)

        print(p.brush())
        self.draw_walls(p)
Exemplo n.º 5
0
	def paintEvent(self, event):
    
		painter = QPainter(self)
		reset_brush = painter.brush()
		for figure in self.__figures:
			if not isinstance(figure, Figure):
				continue
				
			if isinstance(figure, Rectangle):
				painter.setBrush(QBrush(Qt.red))
				painter.drawRect(figure.x(), figure.y(), figure.width(), figure.height())
                continue

			if isinstance(figure, Ellipse):
				painter.setBrush(QBrush(Qt.green))
				painter.drawEllipse(figure.x(), figure.y(), figure.width(), figure.height())	
Exemplo n.º 6
0
    def paint(self,
              painter: QPainter,
              option: QStyleOptionGraphicsItem,
              widget: QWidget = ...):
        fillColor = self.color.darker(
            150) if option.state & QStyle.State_Selected else self.color
        if option.state & QStyle.State_MouseOver:
            fillColor = fillColor.lighter(125)

        lod = option.levelOfDetailFromTransform(painter.worldTransform())

        if lod < 0.2:
            if lod < 0.125:
                painter.fillRect(QRectF(0, 0, 110, 70), fillColor)
                return

            b = painter.brush()
            painter.setBrush(fillColor)
            painter.drawRect(13, 13, 97, 57)
            painter.setBrush(b)
            return

        oldPen = painter.pen()
        pen = oldPen
        width = 0
        if option.state & QStyle.State_Selected:
            width += 2
        pen.setWidth(width)
        b = painter.brush()
        painter.setBrush(
            QBrush(
                fillColor.darker(120 if option.state
                                 & QStyle.State_Sunken else 100)))

        painter.drawRect(QRect(14, 14, 79, 39))
        painter.setBrush(b)

        if lod >= 1:
            painter.setPen(QPen(Qt.gray, 1))
            painter.drawLine(15, 54, 94, 54)
            painter.drawLine(94, 53, 94, 15)
            painter.setPen(QPen(Qt.black, 0))

        # Draw text
        if lod >= 2:
            font = QFont("Times", 10)
            font.setStyleStrategy(QFont.ForceOutline)
            painter.setFont(font)
            painter.save()
            painter.scale(0.1, 0.1)
            painter.drawText(
                170, 180,
                f"Model: VSC-2000 (Very Small Chip) at {self.x}x{self.y}")
            painter.drawText(170, 200,
                             "Serial number: DLWR-WEER-123L-ZZ33-SDSJ")
            painter.drawText(170, 220, "Manufacturer: Chip Manufacturer")
            painter.restore()

        # Drawlines
        lines: List[QLineF] = []
        if lod >= 0.5:
            s = 1 if lod > 0.5 else 2
            for i in range(0, 11, s):
                lines.append(QLineF(18 + 7 * i, 13, 18 + 7 * i, 5))
                lines.append(QLineF(18 + 7 * i, 54, 18 + 7 * i, 62))

            for i in range(0, 7, s):
                lines.append(QLineF(5, 18 + i * 5, 13, 18 + i * 5))
                lines.append(QLineF(94, 18 + i * 5, 102, 18 + i * 5))

        if lod >= 0.4:
            lines.extend([
                QLineF(25, 35, 35, 35),
                QLineF(35, 30, 35, 40),
                QLineF(35, 30, 45, 35),
                QLineF(35, 40, 45, 35),
                QLineF(45, 30, 45, 40),
                QLineF(45, 35, 55, 35)
            ])
        painter.drawLines(lines[:])

        ## Draw red ink
        if len(self.stuff) > 1:
            p = painter.pen()
            painter.setPen(
                QPen(Qt.red, 1, Qt.SolidLine, Qt.RoundCap, Qt.RoundJoin))
            painter.setBrush(Qt.NoBrush)
            path = QPainterPath()
            path.moveTo(self.stuff[0])
            for i in range(1, len(self.stuff)):
                path.lineTo(self.stuff[i])
            painter.drawPath(path)
            painter.setPen(p)