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, event: QPaintEvent): p = QPainter(self) p.setBrush(QtCore.Qt.blue) p.drawRect(10, 10, self.width() - 20, self.height() - 20) p.setBrush(QtCore.Qt.yellow) p.drawEllipse(20, 20, self.width() - 40, self.height() - 40) p.save() p.translate(self.width() / 2, self.height() / 2) # permet de centrer l'aiguille p.save() p.save() p.rotate(270 + (360 / 60) * self.sec) penSec = QPen(QtCore.Qt.black, 1) p.setPen(penSec) p.drawLine(0, 0, (self.width() - 40) / 3, 0) p.restore() p.rotate(270 + (360 / 60) * self.min) penMin = QPen(QtCore.Qt.black, 3) p.setPen(penMin) p.drawLine(0, 0, (self.width() - 40) / 3, 0) p.restore() p.rotate( 270 + (360 / 12) * (self.hour) + ((360 / 60) * (self.min)) / 30 ) # formule a trouver pour avoir une aiguille qui tourne progressivement penHour = QPen(QtCore.Qt.black, 5) p.setPen(penHour) p.drawLine(0, 0, (self.width() - 40) / 5, 0) p.restore() p.setBrush(QtCore.Qt.magenta) p.drawEllipse((self.width() / 2) - 20, (self.height() / 2) - 20, 40, 40)
def paintEvent(self, event: QPaintEvent): p = QPainter(self) p.setBrush(QtCore.Qt.blue) taille = min(self.width(), self.height()) p.drawRect(10, 10, taille - 20, taille - 20) p.setBrush(QtCore.Qt.yellow) p.drawEllipse(20, 20, taille - 40, taille - 40) p.save() p.translate(taille / 2, taille / 2) p.rotate(135 + (self.valeur * 270 / 100)) pen = QPen(QtCore.Qt.black, 10) p.setPen(pen) p.drawLine(0, 0, (taille - 40) / 3, 0) p.restore() pen = QPen(QtCore.Qt.black, 5) p.setPen(pen) p.setBrush(QtCore.Qt.red) p.drawEllipse((taille / 2) - 20, (taille / 2) - 20, 40, 40)
def paintEvent(self, event): p = QPainter(self) p.setRenderHint(QPainter.Antialiasing) # Determine the width and height of the indicator w = self.width() h = self.height() # The smaller dimension determines our diameter d = min(w, h) * 0.9 r = d / 2 # Locate the center of the indicator circle center = QPointF(w / 2, h / 2) if self._on: # Gradient focus in the top left, fading from brighter to bright focus = center - QPointF(r, r) color0 = self._color color1 = self._color.darker(132) else: # Gradient focus in the bottom right, fading from darker to dark focus = center + QPointF(r, r) color0 = self._color.darker(800) color1 = self._color.darker(255) # Construct the gradient and draw the circle using it gradient = QRadialGradient(focus, d * 1.4, focus) gradient.setColorAt(0, color0) gradient.setColorAt(1, color1) p.setBrush(gradient) p.setPen(QColor(96, 96, 96)) p.drawEllipse(center, r, r)
def paintEvent(self, event:QPaintEvent): p = QPainter(self) p.setBrush(Qt.blue) p.drawRect(10,10,self.width()-20, self.height()-20) p.setBrush(Qt.yellow) p.drawEllipse(20,20,self.width()-40, self.height()-40) p.save() p.translate(self.width()/2,self.height()/2) p.save() p.rotate((-90 + self.heure*30)+(self.minute)/2) pen = QPen(Qt.green,10) p.setPen(pen) p.drawLine(0,0,(self.width()-40)/5,0) p.restore() p.rotate(-90 + self.minute*6) pen = QPen(Qt.black, 10) p.setPen(pen) p.drawLine(0, 0, (self.width() - 40) / 3, 0) p.restore() p.setBrush(Qt.red) p.drawEllipse((self.width()/2)-20,(self.height()/2)-20,40, 40)
def drawBg_ZFB(self, painter: QPainter) -> None: painter.save() # 圆半径为高度一定比例,计算宽度,将宽度等分 width: int = self.width() // self.__maxStep height: int = self.height() // 3 radius: int = height // 3 initX: int = width // 2 initY: int = self.height() // 2 # 逐个绘制连接线条 pen: QPen = QPen() pen.setWidthF(radius // 4) pen.setCapStyle(Qt.RoundCap) pen.setColor(self.__background) painter.setPen(pen) painter.setBrush(Qt.NoBrush) for i in range(self.__maxStep - 1): painter.drawLine(QPoint(initX, initY), QPoint(initX + width, initY)) initX += width # 逐个绘制圆 initX: int = width // 2 painter.setPen(Qt.NoPen) painter.setBrush(self.__background) for i in range(self.__maxStep): painter.drawEllipse(QPoint(initX, initY), radius, radius) initX += width painter.restore()
def drawBg(self, painter: QPainter) -> None: radius: int = 99 painter.save() painter.setPen(Qt.NoPen) painter.setBrush(self.__bgColor) painter.drawEllipse(-radius, -radius, radius * 2, radius * 2) painter.restore()
def paintEvent(self, event): rect = QRect(10, 20, 80, 60) path = QPainterPath() path.moveTo(20, 80) path.lineTo(20, 30) path.cubicTo(80, 0, 50, 50, 80, 80) startAngle = 30 * 16 arcLength = 120 * 16 painter = QPainter(self) painter.setPen(self.pen) painter.setBrush(self.brush) if self.antialiased: painter.setRenderHint(QPainter.Antialiasing) for x in range(0, self.width(), 100): for y in range(0, self.height(), 100): painter.save() painter.translate(x, y) if self.transformed: painter.translate(50, 50) painter.rotate(60.0) painter.scale(0.6, 0.9) painter.translate(-50, -50) if self.shape == RenderArea.Line: painter.drawLine(rect.bottomLeft(), rect.topRight()) elif self.shape == RenderArea.Points: painter.drawPoints(RenderArea.points) elif self.shape == RenderArea.Polyline: painter.drawPolyline(RenderArea.points) elif self.shape == RenderArea.Polygon: painter.drawPolygon(RenderArea.points) elif self.shape == RenderArea.Rect: painter.drawRect(rect) elif self.shape == RenderArea.RoundedRect: painter.drawRoundedRect(rect, 25, 25, Qt.RelativeSize) elif self.shape == RenderArea.Ellipse: painter.drawEllipse(rect) elif self.shape == RenderArea.Arc: painter.drawArc(rect, startAngle, arcLength) elif self.shape == RenderArea.Chord: painter.drawChord(rect, startAngle, arcLength) elif self.shape == RenderArea.Pie: painter.drawPie(rect, startAngle, arcLength) elif self.shape == RenderArea.Path: painter.drawPath(path) elif self.shape == RenderArea.Text: painter.drawText(rect, Qt.AlignCenter, "PySide 2\nQt %s" % qVersion()) elif self.shape == RenderArea.Pixmap: painter.drawPixmap(10, 10, self.pixmap) painter.restore() painter.setPen(self.palette().dark().color()) painter.setBrush(Qt.NoBrush) painter.drawRect(QRect(0, 0, self.width() - 1, self.height() - 1))
def paintEvent(self, *args): painter = QPainter(self) painter.setRenderHint(QPainter.HighQualityAntialiasing) r = self.rect() painter.fillRect(r, Qt.white) for element in self.elements: painter.translate(element.bounding_box.topLeft()) element.paint(painter) painter.translate(-element.bounding_box.topLeft()) for wire in self.wires: self._draw_wire(painter, wire) painter.setPen(QPen(Qt.red, 1, Qt.DashLine)) painter.setBrush(Qt.transparent) for element in self.selected_elements: bb = element.bounding_box bb = bb.marginsAdded(QMargins(2, 2, 1, 1)) painter.drawRect(bb) if self.wiring_assistant: painter.setPen(QPen(Qt.red, 1, Qt.PenStyle.DotLine)) for line in self.guidelines: painter.drawLine(line) painter.setPen(QPen(Qt.red, 1, Qt.PenStyle.SolidLine)) for p in self.guidepoints: painter.drawEllipse(p.x() - 4, p.y() - 4, 8, 8) if self.closest_point is not None: p = self.closest_point painter.drawEllipse(p.x() - 4, p.y() - 4, 8, 8)
def drawSign(self, painter: QPainter) -> None: painter.save() # 如果当前选中则绘制角标 if self.__checked: # 计算角标区域 rec: QRect = QRect(self.width() - self.__signSize, self.height() - self.__signSize, self.__signSize, self.__signSize) # 绘制带边框背景 pen: QPen = QPen() pen.setWidth(3) pen.setColor("#FFFFFF") painter.setPen(pen) painter.setBrush(QColor(self.__signColor)) painter.drawEllipse(rec.x() + 3, rec.y() + 3, self.__signSize - 6, self.__signSize - 6) # 绘制文字 self.__iconFont.setPixelSize(16) painter.setFont(self.__iconFont) painter.drawText(rec, Qt.AlignCenter, chr(0xf00c)) painter.restore()
def paintEvent(self, event): rect = QRect(0, 0, self.w - 1, self.h - 1) p = QPainter(self) p.setPen(QPen(Qt.black)) p.setBrush(self.color) if self.type == 1: p.drawRect(0, 0, self.w - 1, self.h - 1) p.drawText( rect, Qt.AlignCenter, self.text ) # 이게 더 좋은데? 어떤 방식이지? => # w.setGeometry(self.geometry()) 차이점이 무엇이지? elif self.type == 2: p.drawEllipse(0, 0, self.w - 1, self.h - 1) p.drawText(rect, Qt.AlignCenter, self.text) elif self.type == 3: p.drawEllipse(0, 0, self.w - 1, self.h - 1) p.drawText(rect, Qt.AlignCenter, self.text) elif self.type == 4: points = [ QPoint(self.w / 2, 0), QPoint(0, self.h / 2), QPoint(self.w / 2, self.h), QPoint(self.w, self.h / 2) ] poly = QPolygon(points) p.drawPolygon(poly) self.update() # self.update()
def update(self, new_vals): self.values = new_vals painter = QPainter(self.label.pixmap()) painter.setRenderHint(QPainter.Antialiasing) painter.setPen(QPen('#333333')) painter.setBrush(QColor('#333333')) painter.drawRect(self.label.rect()) pen = QPen(QColor(255, 255, 255)) pen.setWidth(1) painter.setPen(pen) painter.setBrush(QBrush(Qt.white)) x_old = -1 y_old = -1 for i in range(len(self.values)): v = self.values[i] x = i * (self.label.width() / len(self.values)) y = self.label.height() - self.label.height() * v if self.connect_lines_check_box.isChecked() and i > 0: painter.drawLine(x_old, y_old, x, y) else: painter.drawEllipse(x - 1, y - 1, 2, 2) x_old = x y_old = y self.repaint()
def __init__(self, parent, delegate): QWidget.__init__(self, parent) self.delegate = delegate self.emitted = False self.ui = Ui_AskVerdict() self.ui.setupUi(self) # build verdict icons if not AskVerdict.icons_cache: for text in VERDICTS: color = VERDICT_TO_ROW_COLORS.get(text[0]) pixmap = QPixmap(16, 16) pixmap.fill(Qt.transparent) if color: painter = QPainter(pixmap) painter.setPen(Qt.black) painter.setBrush(color) painter.drawEllipse(0, 0, 15, 15) painter.end() AskVerdict.icons_cache[text] = QIcon(pixmap) # set combo verdict for text in ("other...", "skip", "retry"): self.ui.comboVerdict.addItem(AskVerdict.icons_cache[text], text) model = self.ui.comboVerdict.model() model.itemFromIndex(model.index(0, 0)).setSelectable(False) self.ui.comboVerdict.activated.connect(self.on_dropdown_item_activated) self.ui.goodVerdict.clicked.connect(self.on_good_bad_button_clicked) self.ui.goodVerdict.setIcon(AskVerdict.icons_cache["good"]) self.ui.badVerdict.clicked.connect(self.on_good_bad_button_clicked) self.ui.badVerdict.setIcon(AskVerdict.icons_cache["bad"])
def drawCoverCircle(self, painter: QPainter) -> None: radius: int = self.__radiusCoverCircle painter.save() painter.setPen(Qt.NoPen) painter.setBrush(self.__bgColor) painter.drawEllipse(-radius, -radius, radius * 2, radius * 2) painter.restore()
def paintEvent(self, paintEvent: QPaintEvent): painter = QPainter(self) painter.setBackgroundMode(Qt.TransparentMode) painter.setRenderHint(QPainter.Antialiasing) brush = QBrush() brush.setStyle(Qt.SolidPattern) pen = QPen() pen.setJoinStyle(Qt.RoundJoin) pen.setCapStyle(Qt.RoundCap) center = QPoint(self.width() // 2, self.height() // 2) radius = 0.45 * min(self.width(), self.height()) pen.setColor(self.palette().color(self.color[0])) brush.setColor(self.palette().color(self.color[1])) if self.highlight is True: pen.setColor(self.palette().color(QPalette.Highlight)) pen.setWidth(round(0.15 * radius)) painter.setBrush(brush) painter.setPen(pen) painter.drawEllipse(center, radius, radius) if self.checked is True: brush.setColor(self.palette().color(QPalette.Background)) pen.setColor(self.palette().color(QPalette.Background)) painter.setPen(pen) painter.setBrush(brush) painter.drawEllipse(center, 0.40 * radius, 0.40 * radius) del painter, brush, pen
def drawPointerIndicatorR(self, painter: QPainter) -> None: if not self.__showPointer: return radius: int = self.__radiusCircle - 15 painter.save() pen: QPen = QPen() pen.setWidth(1) pen.setColor(self.__progressColor) painter.setPen(pen) painter.setBrush(self.__progressColor) pts: QPolygon = QPolygon() pts.append(QPoint(-8, 0)) pts.append(QPoint(8, 0)) pts.append(QPoint(0, radius)) painter.rotate(self.__startAngle) degRotate: float = (360.0 - self.__startAngle - self.__endAngle) / ( self.__maxValue - self.__minValue) * (self.__value - self.__minValue) painter.rotate(degRotate) painter.drawConvexPolygon(pts) # 增加绘制圆角直线,与之前三角形重叠,形成圆角指针 pen.setCapStyle(Qt.RoundCap) pen.setWidthF(4) painter.setPen(pen) painter.drawLine(0, 0, 0, radius) # 绘制中心圆点 radius = radius // 4 painter.drawEllipse(-radius, -radius, radius * 2, radius * 2) painter.restore()
def drawElts(self,elt_list,colorElt,colotTxt): for elt in elt_list : l_pp = self.getRealFromUiCoord(elt.getX(),elt.getY()) eltP = QPainter() eltP.begin(self) eltP.setBrush(QBrush(QColor(colorElt))) myPen = QPen() myPen.setBrush(QBrush(QColor(colotTxt))) if 'rect' in elt.getID() : l_pw = elt.getWidth()/self.scaleFactor l_pl = elt.getLength()/self.scaleFactor eltP.drawRect(l_pp.getX()-(l_pw/2),l_pp.getY()-(l_pl/2),l_pw,l_pl) eltP.setPen(myPen) eltP.drawText(l_pp.getX()-(l_pw/4),l_pp.getY(),l_pw,l_pl,1,elt.getID()) elif 'circle' in elt.getID() : l_pr = elt.getRayon()/self.scaleFactor eltP.drawEllipse(l_pp.getX()-(l_pr/2),l_pp.getY()-(l_pr/2),l_pr,l_pr) eltP.setPen(myPen) eltP.drawText(l_pp.getX()-l_pr/3,l_pp.getY(),l_pr,l_pr,1,elt.getID()) else : pass eltP.end()
def event(self, event): if event.type() == QEvent.TouchBegin or event.type( ) == QEvent.TouchUpdate or event.type() == QEvent.TouchEnd: touchPoints = event.touchPoints() for touchPoint in touchPoints: if touchPoint.state() == Qt.TouchPointStationary: continue else: rect = touchPoint.rect() if rect.isEmpty(): diameter = 50 * touchPoint.pressure() rect.setSize(QSizeF(diameter, diameter)) painter = QPainter(self.image) painter.setPen(Qt.NoPen) painter.setBrush(self.myPenColors[touchPoint.id() % len(self.myPenColors)]) painter.drawEllipse(rect) painter.end() self.modified = True rad = 2 self.update(rect.toRect().adjusted(-rad, -rad, +rad, +rad)) else: return super(ScribbleArea, self).event(event) return True
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): s = self.size() qp = QPainter() qp.begin(self) qp.setRenderHint(QPainter.Antialiasing, True) qp.setPen(Qt.NoPen) qp.setBrush(QColor(120, 120, 120)) qp.drawEllipse(0, 0, 20, 20) rg = QRadialGradient(int(self.width() / 2), int(self.height() / 2), 12) rg.setColorAt(0, QColor(255, 255, 255)) rg.setColorAt(0.6, QColor(255, 255, 255)) rg.setColorAt(1, QColor(205, 205, 205)) qp.setBrush(QBrush(rg)) qp.drawEllipse(1, 1, 18, 18) qp.setBrush(QColor(210, 210, 210)) qp.drawEllipse(2, 2, 16, 16) if self.__enabled: lg = QLinearGradient(3, 18, 20, 4) lg.setColorAt(0, QColor(255, 255, 255, 255)) lg.setColorAt(0.55, QColor(230, 230, 230, 255)) lg.setColorAt(0.72, QColor(255, 255, 255, 255)) lg.setColorAt(1, QColor(255, 255, 255, 255)) qp.setBrush(lg) qp.drawEllipse(3, 3, 14, 14) else: lg = QLinearGradient(3, 18, 20, 4) lg.setColorAt(0, QColor(230, 230, 230)) lg.setColorAt(0.55, QColor(210, 210, 210)) lg.setColorAt(0.72, QColor(230, 230, 230)) lg.setColorAt(1, QColor(230, 230, 230)) qp.setBrush(lg) qp.drawEllipse(3, 3, 14, 14) qp.end()
def paintEvent(self, event: QPaintEvent): painter = QPainter(self) painter.setRenderHint(QPainter.Antialiasing, True) painter.setBrush(QColor(255, 160, 90)) painter.drawEllipse(QPointF(self.radius, self.radius), self.radius - 1, self.radius - 1) super(ChessPieces, self).paintEvent(event) pass
def drawPointerIndicator(self, painter: QPainter) -> None: if not self.__showPointer: return radius: int = self.__radiusCircle - 15 painter.save() painter.setPen(Qt.NoPen) painter.setBrush(self.__progressColor) pts: QPolygon = QPolygon() pts.append(QPoint(-8, 0)) pts.append(QPoint(8, 0)) pts.append(QPoint(0, radius)) painter.rotate(self.__startAngle) degRotate: float = (360.0 - self.__startAngle - self.__endAngle) / ( self.__maxValue - self.__minValue) * (self.__value - self.__minValue) painter.rotate(degRotate) painter.drawConvexPolygon(pts) # 绘制中心圆点 radius = radius // 4 painter.drawEllipse(-radius, -radius, radius * 2, radius * 2) painter.restore()
def doubleBufferPaint(self, buffer=None): self.blockSignals(True) #self.drawFrame(painter) if buffer is None: buffer = QImage(self.width(), self.height(), QImage.Format_RGB888) buffer.fill(Qt.black) # calculate offset and scale of droplet image pixmap scale_x, scale_y, offset_x, offset_y = self.get_from_image_transform() db_painter = QPainter(buffer) db_painter.setRenderHints(QPainter.Antialiasing | QPainter.NonCosmeticDefaultPen) db_painter.setBackground(QBrush(Qt.black)) db_painter.setPen(QPen(Qt.black, 0)) db_painter.drawPixmap(offset_x, offset_y, self._pixmap) pen = QPen(Qt.magenta, 1) pen_fine = QPen(Qt.blue, 1) pen.setCosmetic(True) db_painter.setPen(pen) # draw droplet outline and tangent only if evaluate_droplet was successful if self._droplet.is_valid: try: # transforming true image coordinates to scaled pixmap coordinates db_painter.translate(offset_x, offset_y) db_painter.scale(scale_x, scale_y) # drawing tangents and baseline db_painter.drawLine(*self._droplet.line_l) db_painter.drawLine(*self._droplet.line_r) db_painter.drawLine(*self._droplet.int_l, *self._droplet.int_r) # move origin to ellipse origin db_painter.translate(*self._droplet.center) # draw diagnostics # db_painter.setPen(pen_fine) # # lines parallel to coordinate axes # db_painter.drawLine(0,0,20*scale_x,0) # db_painter.drawLine(0,0,0,20*scale_y) # # angle arc # db_painter.drawArc(-5*scale_x, -5*scale_y, 10*scale_x, 10*scale_y, 0, -self._droplet.tilt_deg*16) # rotate coordinates to ellipse tilt db_painter.rotate(self._droplet.tilt_deg) # draw ellipse # db_painter.setPen(pen) db_painter.drawEllipse(-self._droplet.maj / 2, -self._droplet.min / 2, self._droplet.maj, self._droplet.min) # # major and minor axis for diagnostics # db_painter.drawLine(0, 0, self._droplet.maj/2, 0) # db_painter.drawLine(0, 0, 0, self._droplet.min/2) except Exception as ex: logging.error(ex) db_painter.end() self.blockSignals(False) return buffer
def paintEvent (self, event:QPaintEvent): p = QPainter(self) p.setBrush(QtCore.Qt.blue) p.drawRect (10, 10, self.width()-20, self.height()-20) p.setBrush(QtCore.Qt.yellow) p.drawEllipse(20,20,self.width()-40, self.height()-40) p.setBrush(QtCore.Qt.green) p.drawEllipse(30,30,self.width()-60, self.height()-60 )
def paintEvent(self, event:QPaintEvent): p = QPainter(self) p.setBrush(QtCore.Qt.darkBlue) p.drawRect(10,10,self.width()-20, self.height()-20) p.setBrush(QtCore.Qt.white) p.drawEllipse(20,20,self.width()-40, self.height()-40) p.save() p.translate(self.width()/1.4, self.height()/1.4) p.rotate(270+self.valeurMSec*0.36) pen = QPen(QtCore.Qt.black, 2, QtCore.Qt.SolidLine, QtCore.Qt.RoundCap) p.setPen(pen) p.drawLine(0, 0, (self.width()-40)/6, 0) p.restore() p.save() p.translate(self.width()/2, self.height()/2) p.rotate(270+self.valeurSec*6) pen = QPen(QtCore.Qt.black, 6, QtCore.Qt.DashDotDotLine, QtCore.Qt.RoundCap) p.setPen(pen) p.drawLine(0, 0, (self.width()-40)/3, 0) p.restore() p.save() p.translate(self.width() / 2, self.height() / 2) p.rotate(270 + self.valeurMin * 6) pen = QPen(QtCore.Qt.green, 10, QtCore.Qt.SolidLine, QtCore.Qt.RoundCap) p.setPen(pen) p.drawLine(0, 0, (self.width() - 40) / 3, 0) p.restore() p.save() p.translate(self.width() / 2, self.height() / 2) p.rotate(270 + self.valeurHeu * 30) pen = QPen(QtCore.Qt.red, 10, QtCore.Qt.SolidLine, QtCore.Qt.RoundCap) p.setPen(pen) p.drawLine(0, 0, (self.width() - 200) / 3, 0) p.restore() p.setBrush(QtCore.Qt.red) p.drawEllipse((self.width()/2)-20, (self.height()/2)-20, 40, 40)
def paintEvent(self, e: QEvent): """ Call when Qt renderer engine estimate that is needed :param e: the event """ qp = QPainter(self) qp.drawImage(0, 0, self._buffer) qp.setBrush(QColor.fromRgb(255, 255, 0, 180)) qp.drawEllipse(QPoint(self.mouseX, self.mouseY), 5, 5)
def paintEvent(self, ev): qp = QPainter(self) qp.setRenderHint(QPainter.Antialiasing) for p in self.points: pen = QPen(p['color'], 5) brush = QBrush(p['color']) qp.setPen(pen) qp.setBrush(brush) qp.drawEllipse(QPoint(p['x'], p['y']), 5, 5)
def paintEvent(self, event: QPaintEvent): painter = QPainter(self) # pen = QPen(Qt.white, 0, Qt.SolidLine) painter.setPen(Qt.NoPen) painter.setRenderHint(QPainter.Antialiasing, True) painter.setBrush(QColor(255, 160, 90)) painter.setBrush(Qt.NoBrush) painter.drawEllipse(QPointF(self.radius, self.radius), self.radius - 1, self.radius - 1) super(RootPieces, self).paintEvent(event) pass
def drawCurrentBg_TB(self, painter: QPainter) -> None: painter.save() # 圆半径为高度一定比例,计算宽度,将宽度等分 width: int = self.width() // self.__maxStep height: int = self.height() // 3 radius: int = height // 2 initX: int = width // 2 initY: int = self.height() // 2 radius -= radius // 5 # 逐个绘制连接线条 pen: QPen = QPen() pen.setWidthF(radius / 7) pen.setCapStyle(Qt.RoundCap) pen.setColor(self.__currentBackground) painter.setPen(pen) painter.setBrush(Qt.NoBrush) for i in range(self.__currentStep - 1): painter.drawLine(QPoint(initX, initY), QPoint(initX + width, initY)) initX += width # 如果当前进度超过一个步数且小于最大步数则增加半个线条 if 0 < self.__currentStep < self.__maxStep: painter.drawLine(QPoint(initX, initY), QPoint(initX + width // 2, initY)) # 逐个绘制圆 initX: int = width // 2 painter.setPen(Qt.NoPen) painter.setBrush(self.__currentBackground) for i in range(self.__currentStep): painter.drawEllipse(QPoint(initX, initY), radius, radius) initX += width # 逐个绘制圆中的字符串 initX: int = width // 2 self.__iconFont.setPixelSize(radius) painter.setFont(self.__iconFont) painter.setPen(self.__currentForeground) painter.setBrush(Qt.NoBrush) # 完成字符,可以查看表格更换图形字符 finshStr: str = chr(0xf00c) for i in range(self.__currentStep): textRect: QRect = QRect(initX - radius, initY - radius, radius * 2, radius * 2) painter.drawText(textRect, Qt.AlignCenter, finshStr) initX += width painter.restore()
def drawCircle(self, painter: QPainter) -> None: radius: int = self.__radiusCircle painter.save() painter.setPen(Qt.NoPen) bgGradient: QLinearGradient = QLinearGradient(0, -radius, 0, radius) bgGradient.setColorAt(0.0, self.__circleColorStart) bgGradient.setColorAt(1.0, self.__circleColorEnd) painter.setBrush(bgGradient) painter.drawEllipse(-radius, -radius, radius * 2, radius * 2) painter.restore()
def paintEvent(self, event): painter = QPainter(self) painter.setRenderHint(QPainter.Antialiasing, self.antialiased) painter.translate(self.width() / 2, self.height() / 2) for diameter in range(0, 256, 9): delta = abs((self.frameNo % 128) - diameter / 2) alpha = 255 - (delta * delta) / 4 - diameter if alpha > 0: painter.setPen(QPen(QColor(0, diameter / 2, 127, alpha), 3)) if self.floatBased: painter.drawEllipse(QRectF(-diameter / 2.0, -diameter / 2.0, diameter, diameter)) else: painter.drawEllipse(QRect(-diameter / 2, -diameter / 2, diameter, diameter))
def testFromData(self): picture = QPicture() painter = QPainter() painter.begin(picture) painter.drawEllipse(10, 20, 80, 70) painter.end() data = picture.data() picture2 = QPicture() picture2.setData(data) self.assertEqual(picture2.data(), picture.data()) w = MyWidget() w._picture = picture2 w._app = self.app QTimer.singleShot(300, w.show) self.app.exec_()