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 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 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 drawRectShape(self, event): ''' Draws a rectangle for the textEdit box ''' textBoxRect = self.rect() outerCircleRect = self.rect() textBoxRect.adjust(+30, +30, -12, -12) outerCircleRect.adjust(+8, +8, -8, -15) moveRect = QRect(0, 0, 11, 11) shapePainter = QPainter(self) shapePainter.setRenderHint(shapePainter.Antialiasing) # shapePainter.setPen(QPen(QColor(14,125,145), 5, Qt.SolidLine)) # shapePainter.drawRect(textBoxRect) shapePainter.setPen(QPen(QColor(14, 125, 145), 5, Qt.SolidLine)) shapePainter.drawLine(outerCircleRect.topLeft(), outerCircleRect.bottomLeft()) # shapePainter.setPen(QPen(QColor(14,125,145), 2, Qt.SolidLine)) # arcRect = QRect(outerCircleRect.bottomLeft().x() - 6, outerCircleRect.bottomLeft().y()+1, 12, 12) # shapePainter.drawArc(arcRect, 0, CIRCLE) self.pTextEdit.setEnabled(True) self.pTextEdit.setVisible(True) self.pTextEdit.ensureCursorVisible() self.pTextEdit.setFocus()
def paintEvent(self, event): # startTime = datetime.datetime.now() if self.mouseIsDown: painter = QPainter(self.viewport()) # painter.drawEllipse(self.center,10,10) painter.drawLine(self.center, self.startCenter) QTableView.paintEvent(self, event)
def paintEvent(self, arg__1: QPaintEvent): # super(Push, self).paintEvent(arg__1) # lightgrey painter = QPainter() painter.begin(self) pen = QPen(QColor(162, 181, 205), 2, Qt.SolidLine) painter.setBrush(QBrush(QColor(255, 255, 255))) painter.setPen(pen) painter.setRenderHint(QPainter.Antialiasing, True) rect = QRect() rect.moveTo(1, 10) rect.setWidth(140) rect.setHeight(140) painter.drawRoundedRect(rect, 5, 5) painter.drawConvexPolygon( [QPoint(60, 10), QPoint(80, 10), QPoint(70, 1)]) pen.setColor(QColor(255, 255, 255)) painter.setPen(pen) painter.drawLine(63, 10, 77, 10) pen.setWidth(1) painter.setPen(pen) painter.drawPoints([QPoint(61, 10), QPoint(78, 10)]) painter.end()
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, event): super(BubbleLabel, self).paintEvent(event) painter = QPainter(self) painter.setRenderHint(QPainter.Antialiasing) # 抗锯齿 rectPath = QPainterPath() # 圆角矩形 triPath = QPainterPath() # 底部三角形 height = self.height() - 8 # 往上偏移8 rectPath.addRoundedRect(QRectF(0, 0, self.width(), height), 5, 5) x = self.width() / 5 * 4 triPath.moveTo(x, height) # 移动到底部横线4/5处 # 画三角形 triPath.lineTo(x + 6, height + 8) triPath.lineTo(x + 12, height) rectPath.addPath(triPath) # 添加三角形到之前的矩形上 # 边框画笔 painter.setPen(QPen(self.BorderColor, 1, Qt.SolidLine, Qt.RoundCap, Qt.RoundJoin)) # 背景画刷 painter.setBrush(self.BackgroundColor) # 绘制形状 painter.drawPath(rectPath) # 三角形底边绘制一条线保证颜色与背景一样 painter.setPen(QPen(self.BackgroundColor, 1, Qt.SolidLine, Qt.RoundCap, Qt.RoundJoin)) painter.drawLine(x, height, x + 12, height)
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 paintEvent(self, event): side = min(self.width(), self.height()) time = QTime.currentTime() painter = QPainter(self) painter.setRenderHint(QPainter.Antialiasing) painter.translate(self.width() / 2, self.height() / 2) painter.scale(side / 200.0, side / 200.0) painter.setPen(Qt.NoPen) painter.setBrush(AnalogClock.hourColor) painter.save() painter.rotate(30.0 * ((time.hour() + time.minute() / 60.0))) painter.drawConvexPolygon(AnalogClock.hourHand) painter.restore() painter.setPen(AnalogClock.hourColor) for i in range(12): painter.drawLine(88, 0, 96, 0) painter.rotate(30.0) painter.setPen(Qt.NoPen) painter.setBrush(AnalogClock.minuteColor) painter.save() painter.rotate(6.0 * (time.minute() + time.second() / 60.0)) painter.drawConvexPolygon(AnalogClock.minuteHand) painter.restore() painter.setPen(AnalogClock.minuteColor) for j in range(60): if (j % 5) != 0: painter.drawLine(92, 0, 96, 0) painter.rotate(6.0)
def drawLine(self, painter: QPainter) -> None: """ """ if not self.__showLine: return if not self.isChecked(): return painter.save() pen: QPen = QPen() pen.setWidth(self.__lineWidth) pen.setColor(self.__lineColor) painter.setPen(pen) # 根据线条位置设置线条坐标 pointStart: QPoint = QPoint() pointEnd: QPoint = QPoint() if self.__linePosition == NavButton.LinePosition.LINEPOSITION_LEFT: pointStart = QPoint(0, 0) pointEnd = QPoint(0, self.height()) elif self.__linePosition == NavButton.LinePosition.LINEPOSITION_RIGHT: pointStart = QPoint(self.width(), 0) pointEnd = QPoint(self.width(), self.height()) elif self.__linePosition == NavButton.LinePosition.LINEPOSITION_TOP: pointStart = QPoint(0, 0) pointEnd = QPoint(self.width(), 0) elif self.__linePosition == NavButton.LinePosition.LINEPOSITION_BOTTOM: pointStart = QPoint(0, self.height()) pointEnd = QPoint(self.width(), self.height()) painter.drawLine(pointStart, pointEnd) painter.restore()
def paint( self, painter: QtGui.QPainter, option: QtWidgets.QStyleOptionGraphicsItem, widget: QtWidgets.QWidget = None, ): option.state &= ~QtWidgets.QStyle.State_Selected super().paint(painter, option, widget) if self.trim_enabled: painter.drawLine( QtCore.QPointF(self.rect().left(), self.top), QtCore.QPointF(self.rect().right(), self.top), ) painter.drawLine( QtCore.QPointF(self.rect().left(), self.bottom), QtCore.QPointF(self.rect().right(), self.bottom), ) rect = self.rect() rect.setBottom(self.top) painter.fillRect(rect, QtGui.QBrush(QtGui.QColor(255, 255, 255, 32))) rect = self.rect() rect.setTop(self.bottom) painter.fillRect(rect, QtGui.QBrush(QtGui.QColor(255, 255, 255, 32))) else: painter.fillRect(self.rect(), QtGui.QBrush(QtGui.QColor(255, 255, 255, 32)))
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 paintEvent(self, event): """ custom paint event to draw horizontal line and handles at current y level """ super().paintEvent(event) painter = QPainter(self) #painter.beginNativePainting() #painter.setRenderHint(QPainter.Antialiasing) x1,y1,x2,y2 = self.rect().getCoords() #painter.setPen(QPen(Qt.gray, 1)) #painter.drawRect(self.rect()) painter.setPen(QPen(COLOR, 1)) painter.drawLine(QPoint(x1, y1+(y2-y1)/2), QPoint(x2, y1+(y2-y1)/2)) path = QPainterPath() path.moveTo(x1, y1) path.lineTo(x1, y1 + y2) path.lineTo(10, y1 + y2/2) path.lineTo(x1, y1) painter.fillPath(path, QBrush(COLOR)) path = QPainterPath() path.moveTo(x2+1, y1) path.lineTo(x2+1, y1 + y2) path.lineTo(x2 - 9, y1 + y2/2) path.lineTo(x2+1, y1) painter.fillPath(path, QBrush(COLOR)) #painter.endNativePainting() painter.end()
def paintEvent(self, event): painter = QPainter(self) painter.begin(self) painter.setPen(QPen(QColor(Qt.black), self.thickness, self.penStyle)) painter.drawLine(20, self.height / 2, self.width, self.height / 2) painter.end() self.update()
def mousePressEvent(self, event): self._mouseLastPos = self.getLocalMousePos() if event.button() == Qt.LeftButton: self._mousePressed = MouseButton.LEFT elif event.button() == Qt.RightButton: self._mousePressed = MouseButton.RIGHT if self._drawMode == DrawingMode.PEN: if self._mousePressed == MouseButton.LEFT: self.doDraw(event.localPos(), True) elif self._drawMode == DrawingMode.DOTTED: if self._mousePressed == MouseButton.LEFT: self.doDraw(event.localPos(), True) elif self._mousePressed == MouseButton.RIGHT: self.doDraw(event.localPos(), False) elif self._drawMode == DrawingMode.ERASE: if self._mousePressed == MouseButton.LEFT: self.doDraw(event.localPos(), False) elif self._drawMode == DrawingMode.LINE: if self._mousePressed == MouseButton.LEFT: self._lineState = [event.localPos(), event.localPos()] painter = QPainter(self._scratch) painter.setPen(Qt.black) painter.drawLine(self._lineState[0], self._lineState[1]) painter.end() self.update(self.rect()) elif self._drawMode == DrawingMode.ATTR: if self._mousePressed == MouseButton.LEFT: self.doDrawAttr(event.localPos())
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 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 draw(self, painter: QPainter): super().draw(painter) pen = painter.pen() pen.setColor(QColor('darkgrey')) painter.setPen(pen) w = self.width h = self.height painter.drawLine(w//2, h*3//4, w*13//14, h*3//12)
def draw(cls, x, y, self: PreparedLine, painter: QPainter): old_pen = painter.pen() pen = QPen(QColor(0)) pen.setWidth(self.size) pen.setStyle(Qt.PenStyle.SolidLine) painter.setPen(pen) tx = self.left + x ty = self.top + y painter.drawLine(QLine(tx, ty, tx + self.width, ty + self.height)) painter.setPen(old_pen)
def mouseMoveEvent(self, event): if event.buttons() and Qt.LeftButton and self.drawing: painter = QPainter(self.image) painter.setPen( QPen(self.brushColor, self.brushSize, Qt.SolidLine, Qt.RoundCap, Qt.RoundJoin)) painter.drawLine(self.lastPoint, event.pos() - QPoint(0, self.toolbar.height())) self.lastPoint = event.pos() - QPoint(0, self.toolbar.height()) self.update()
def paintEvent(self, event: QPaintEvent): painter = QPainter() painter.begin(self) pen = QPen(Qt.black, 2, Qt.SolidLine) painter.setPen(pen) for i in range(4): painter.drawLine(70, 30 + i * 179, 607, 30 + i * 179) painter.drawLine(70 + i * 179, 30, 70 + i * 179, 567) painter.end()
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 paint(self,painter:QPainter,view:QPaintDevice): painter.begin(view) self.setTool(painter) x1=linearTrans(self.x1,self.width,view.width()) y1=linearTrans(self.y1,self.height,view.height()) x2=linearTrans(self.x2,self.width,view.width()) y2=linearTrans(self.y2,self.height,view.height()) painter.drawLine(x1,y1,x2,y2) print("line:(%d,%d),(%d,%d)"%(x1,y1,x2,y2)) painter.end() pass
def paint(self, painter: QPainter, model: BaseModel): if model.is_alive: assert self.is_set, 'Painter is not set.' _origin = self.transform(model.x, model.y, is_point=True) for _i, _pen in enumerate( [self._pen_z_2, self._pen_z_1, self._pen_z_0]): _factor = (3 - _i) / 3 _tail_x = _origin.x() - model.dir_y * self._length * _factor _tail_y = _origin.y() + model.dir_x * self._length * _factor _tail = QPoint(_tail_x, _tail_y) painter.setPen(_pen) painter.drawLine(_origin, _tail)
def paintEvent(self, paintEvent): painter = QPainter(self) r = self._frame.rect() r -= QMargins(3, 3, 3, 4) painter.drawRect(r) painter.translate(r.width() / 2 + r.left(), r.height() / 2 + r.top()) dp = math.degrees(self._p) pr = r.height() / 90 painter.translate(0, pr * dp) d = math.degrees(self._r) painter.rotate(d) painter.drawLine(-r.width() / 2, 0, r.width() / 2, 0) painter.drawLine(0, r.height() / 2, 0, -r.height() / 2)
def paint(self, painter: QPainter, option: QStyleOptionGraphicsItem, widget: Optional[QWidget]) -> None: if self.is_on_selected_path: pen = QPen(QColor("green"), 5) pen.setCosmetic(True) painter.setPen(pen) painter.drawLine(self.ix, self.iy, self.jx, self.jy) else: pen = QPen(Qt.gray) pen.setWidth(2) pen.setCosmetic(True) painter.setPen(pen) painter.drawLine(self.ix, self.iy, self.jx, self.jy)
def drawGrid(self, image): "draws a grid on image" img = QPixmap(image.width() + 1, image.height() + 1) p = QPainter(img) p.drawPixmap(1, 1, image) # the +1 is for the grid around the image; otherwise grid is cut off w, h, z = img.width(), img.height(), self.zoom for i in range(max(self.width, self.height) + 1): p.drawLine(QPoint(0, i * z), QPoint(w, i * z)) # horiztonal lines p.drawLine(QPoint(i * z, 0), QPoint(i * z, h)) # vertical lines return img
def drawLine(self, painter: QPainter) -> None: # 上下部分偏移量 offset: int = 10 width: int = self.width() height: int = self.height() painter.save() painter.setBrush(Qt.NoBrush) pen: QPen = QPen() pen.setWidth(3) pen.setColor(self.__lineColor) pen.setCapStyle(Qt.RoundCap) painter.setPen(pen) # 每次同时存在三个元素 if self.__horizontal: painter.drawLine(width // 3 * 1, offset, width // 3 * 1, height - offset) painter.drawLine(width // 3 * 2, offset, width // 3 * 2, height - offset) else: painter.drawLine(offset, height // 3 * 1, width - offset, height // 3 * 1) painter.drawLine(offset, height // 3 * 2, width - offset, height // 3 * 2) painter.restore()
def draw_overlay(self, pixmap): if self.line == [0, 0, 0, 0]: return pixmap painter = QPainter(pixmap) pen = QPen(QColor("green")) pen.setWidth(1) painter.setPen(pen) painter.drawLine(self.line[0], self.line[1], self.line[2], self.line[3]) painter.end() return pixmap