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))
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
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
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)
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())
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)