def drawOverlay(self, painter: QPainter) -> None:
        if not self.__showOverlay: return

        radius: int = 80
        painter.save()
        painter.setPen(Qt.NoPen)

        smallCircle: QPainterPath = QPainterPath()
        bigCircle: QPainterPath = QPainterPath()
        radius -= 1
        smallCircle.addEllipse(-radius, -radius, radius * 2, radius * 2)
        radius *= 2
        bigCircle.addEllipse(-radius, -radius + 140, radius * 2, radius * 2)

        # 高光的形状为小圆扣掉大圆的部分
        highlight: QPainterPath = smallCircle - bigCircle

        linearGradient: QLinearGradient = QLinearGradient(0, -radius / 2, 0, 0)
        self.__overlayColor.setAlpha(100)
        linearGradient.setColorAt(0.0, self.__overlayColor)
        self.__overlayColor.setAlpha(30)
        linearGradient.setColorAt(1.0, self.__overlayColor)
        painter.setBrush(linearGradient)
        painter.rotate(-20)
        painter.drawPath(highlight)

        painter.restore()
Exemplo n.º 2
0
    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))
Exemplo n.º 3
0
    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()
Exemplo n.º 4
0
    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()
Exemplo n.º 5
0
    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)
Exemplo n.º 6
0
    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))
Exemplo n.º 7
0
    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)
Exemplo n.º 8
0
    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
Exemplo n.º 9
0
    def paintEvent(self, event: PySide2.QtGui.QPaintEvent):
        painter = QPainter(self)

        if self.orientation is None:
            return
        if self.image is not None:
            painter.save()
            image_width = self.image.width()
            image_height = self.image.height()
            if self.orientation % 2 == 0:
                scale = min(self.width() / image_width,
                            self.height() / image_height)
            else:
                scale = min(self.width() / image_height,
                            self.height() / image_width)

            target_width = image_width * scale
            target_height = image_height * scale
            padding_left = (self.width() - target_width) // 2
            padding_top = (self.height() - target_height) // 2
            painter.translate(self.width() / 2, self.height() / 2)
            painter.rotate(90 * self.orientation)
            painter.translate(-self.width() / 2, -self.height() / 2)
            painter.drawImage(
                QRect(padding_left, padding_top, target_width, target_height),
                self.image)
            painter.restore()

            if self.original_orientation is not None:
                painter.save()
                self.render_orientation_indicator(painter,
                                                  self.original_orientation,
                                                  target_height,
                                                  target_width,
                                                  pen_color=Qt.yellow,
                                                  brush_color=Qt.darkYellow)
                painter.restore()
            if self.suggested_orientation is not None:
                painter.save()
                self.render_orientation_indicator(painter,
                                                  self.suggested_orientation,
                                                  target_height,
                                                  target_width,
                                                  pen_color=Qt.green,
                                                  brush_color=Qt.darkGreen)
                painter.restore()
        if self.loading:
            painter.save()
            painter.setPen(self.palette().brush(QPalette.Foreground).color())
            font = painter.font()
            font.setPointSize(font.pointSize() * 2)
            painter.setFont(font)
            draw_text(painter,
                      self.width() / 2,
                      self.height() / 2, Qt.AlignVCenter | Qt.AlignHCenter,
                      "Loading...")
            painter.restore()
Exemplo n.º 10
0
 def paintEvent(self, event):
     pixmap = self.pixmap
     painter = QPainter(self)
     if self.isChecked(
     ):  # Todo only if rotate button is clicked rotate. we have to fix this -> src.main.PdfConverter.rotate_button(self).isClicked()
         painter.translate(self.width(), 0)
         self.rotate += 90
         self.rotate %= 360
         painter.rotate(90)
     painter.drawPixmap(event.rect(), pixmap)
Exemplo n.º 11
0
 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)
Exemplo n.º 12
0
    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.translate(taille / 2, taille / 2)
        p.rotate(135 + self.valeur * 2.7)

        p.drawLine(0, 0, 0, taille / 3)
Exemplo n.º 13
0
    def paintEvent(self, event):
        side = min(self.width(), self.height())
        curr_time = self._time

        painter = QPainter()
        painter.begin(self)
        painter.setRenderHint(QPainter.Antialiasing)
        painter.translate(self.width() / 2, self.height() / 2)

        # draw clock frame
        painter.setBrush(QBrush(self.background_color))
        r = side / 2
        painter.drawEllipse(QPoint(0, 0), side / 2, side / 2)

        for i in range(0, 12):
            x, y = self.rotate_point(0, -r * 0.95, i * 360 / 12)
            painter.drawEllipse(x - 3, y - 3, 6, 6)

        painter.setPen(self.text_color)
        for i in range(0, 12):
            x, y = self.rotate_point(0, -r * 0.85, i * 360 / 12)
            painter.drawText(QRect(x - 10, y - 10, 20, 20), Qt.AlignCenter,
                             "%d" % i)

        painter.setPen(self.background_color)
        painter.setBrush(QBrush(self.min_pin_color))
        for j in range(0, 60):
            if j % 5 != 0:
                x, y = self.rotate_point(0, -r * 0.95, j * 360 / 60)
                painter.drawEllipse(x - 1, y - 1, 2, 2)
        painter.setClipping(False)

        # draw hands
        painter.setBrush(QBrush(self.hour_pin_color))

        painter.save()
        self.hour_pin[2] = QPoint(0, int(-r * 0.6))
        painter.rotate(30.0 * (curr_time.hour() + curr_time.minute() / 60.0))
        painter.drawConvexPolygon(self.hour_pin)
        painter.restore()

        painter.setBrush(QBrush(self.min_pin_color))

        painter.save()
        self.minute_pin[2] = QPoint(0, int(-r * 0.9))
        painter.rotate(6.0 * (curr_time.minute() + curr_time.second() / 60.0))
        painter.drawConvexPolygon(self.minute_pin)
        painter.restore()

        painter.end()
 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)
Exemplo n.º 15
0
    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)
Exemplo n.º 16
0
    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())
        painter.drawLine(0, r.height() / 3, 0, -r.height() / 3)
        painter.rotate(self._y)
        painter.drawLine(0, -r.height() / 2, 3, -r.height() / 2 + 7)
        painter.drawLine(-3, -r.height() / 2 + 7, 3, -r.height() / 2 + 7)
        painter.drawLine(-3, -r.height() / 2 + 7, 0, -r.height() / 2)

        painter.drawLine(-r.height() / 2, 0, -r.height() / 2 + 5, 0)
        painter.drawLine(r.height() / 2, 0, r.height() / 2 - 5, 0)
        painter.drawLine(0, r.height() / 2, 0, r.height() / 2 - 5)
        for i in range(0, 360, 10):
            painter.drawLine(0, -r.height() / 2, 0, -r.height() / 2 + 3)
            painter.rotate(10)
Exemplo n.º 17
0
    def drawPointerCircle(self, painter: QPainter) -> None:
        if not self.__showPointer: return

        radius: int = 15
        offset: int = self.__radiusCircle - 60
        painter.save()
        painter.setPen(Qt.NoPen)

        painter.rotate(self.__startAngle)
        degRotate: float = (360.0 - self.__startAngle - self.__endAngle) / (
            self.__maxValue - self.__minValue) * (self.__value -
                                                  self.__minValue)
        painter.rotate(degRotate)

        painter.setBrush(self.__progressColor)
        painter.drawEllipse(-radius, radius + offset, radius * 2, radius * 2)

        painter.restore()
Exemplo n.º 18
0
    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)#
        p.rotate(135+self.valeur*2.7)
        pen = QPen(QtCore.Qt.black,10)
        p.setPen(pen)
        p.drawLine(0,0,(self.width()-40)/4, 0)

        p.restore()

        p.setBrush(QtCore.Qt.red)
        p.drawEllipse((self.width()/2)-20,(self.height()/2)-20,40,40)
Exemplo n.º 19
0
    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)
Exemplo n.º 20
0
    def drawPointerTriangle(self, painter: QPainter) -> None:
        if not self.__showPointer: return

        radius: int = 20
        offset: int = self.__radiusCircle - 25
        painter.save()
        painter.setPen(Qt.NoPen)
        painter.setBrush(self.__progressColor)

        pts: QPolygon = QPolygon()
        pts.append(QPoint(-radius // 2, offset))
        pts.append(QPoint(radius // 2, offset))
        pts.append(QPoint(0, radius + offset))

        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)

        painter.restore()
Exemplo n.º 21
0
    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)
        p.rotate(
            self.valeur *
            3.6)  #on lui dit de nous présenter les 360° sur une echelle de 100
        #pour faire le compteur de vitesse de la voiture, le 0 on le met à 135°: 135+self.valeur*2.8

        pen = QPen(QtCore.Qt.black, 8)
        p.setPen(pen)
        p.drawLine(0, 0, (self.width() - 40) / 3, 0)

        p.restore()

        p.setBrush(QtCore.Qt.red)
        p.drawEllipse((self.width() / 2) - 20, (self.height() / 2) - 20, 40,
                      40)
    def paint_world(self, painter: QtGui.QPainter, world: World):
        painter.rotate(world.get_direction())
        painter.translate(*world.get_center())
        painter.drawLine(-100, 0, 200, 0)
        painter.drawLine(0, -100, 0, 200)

        # paint road
        painter.setPen(QtGui.QColor(0, 0, 0))
        for seg in world.get_segments(None):
            x1, y1 = seg.from_
            x2, y2 = seg.to
            painter.drawLine(x1, y1, x2, y2)

        # paint car
        painter.setPen(QtGui.QColor(100, 100, 200))
        for veh in world.get_vehicles(None):
            painter.save()
            painter.translate(*veh.get_position())
            painter.rotate(veh.get_rotate())
            painter.drawRect(veh.get_bbox())

            # draw detector rays
            angles = [rad / np.pi * 180.0 for rad in veh.detector_angles]
            dists = veh.detector_distances

            for angle, dist in zip(angles, dists):
                painter.save()
                painter.rotate(angle)
                if dist is np.inf:
                    painter.drawLine(0.0, 0.0, 1000.0, 0.0)
                else:
                    painter.drawLine(0.0, 0.0, dist, 0.0)
                    painter.drawEllipse(QtCore.QPointF(dist, 0.0), 5.0, 5.0)
                painter.restore()

            painter.restore()
Exemplo n.º 23
0
    def paintEvent(self, event):
        hour_hand = [QPoint(7, 8), QPoint(-7, 8), QPoint(0, -40)]
        minute_hand = [QPoint(7, 8), QPoint(-7, 8), QPoint(0, -70)]
        second_hand = [QPoint(2, 8), QPoint(-2, 8), QPoint(0, -90)]

        hour_color = QColor(0x8b, 0, 0xff)
        minute_color = QColor(0, 0xbf, 0xff, 191)
        second_color = QColor(0xff, 0x82, 0xab, 191)

        side = min(self.width(), self.height())

        painter = QPainter(self)

        # pre settings

        painter.setRenderHint(QPainter.Antialiasing)
        painter.translate(self.width() / 2, self.height() / 2)

        painter.scale(side / 200, side / 200)

        painter.setPen(Qt.NoPen)

        # draw hour scale & hour hand
        painter.setBrush(hour_color)

        painter.save()

        painter.rotate(30 * (self._hour + self._minute / 60))
        painter.drawConvexPolygon(hour_hand)
        painter.restore()

        painter.setPen(hour_color)

        for i in range(12):
            painter.drawLine(88, 0, 96, 0)
            painter.rotate(30)

        painter.setPen(Qt.NoPen)

        # draw minute scale & minute hand
        painter.setBrush(minute_color)

        painter.save()

        painter.rotate(6 * (self._minute + self._second / 60))
        painter.drawConvexPolygon(minute_hand)
        painter.restore()

        painter.setPen(minute_color)

        for i in range(60):
            if i % 5:
                painter.drawLine(92, 0, 96, 0)
            painter.rotate(6.0)

        painter.setPen(Qt.NoPen)

        # draw second scale & second hand
        painter.setBrush(second_color)

        painter.save()

        painter.rotate(6 * self._second)
        painter.drawConvexPolygon(second_hand)
        painter.restore()
Exemplo n.º 24
0
    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.black)
        #p.drawEllipse(20,20,self.width()-40, self.height()-40)

        p.translate(0, 0)
        p.setBrush(QtCore.Qt.black)
        p.drawEllipse(0, 0, self.height(), self.height())
        p.translate(self.height() / 2, self.height() / 2)

        angle_sec = 360. * self.valeur_sec / 60.
        angle_min = 360. * (self.valeur_min + self.valeur_sec / 60.) / 60.
        angle_h = 360. * (self.valeur_h + self.valeur_min / 60. +
                          self.valeur_sec / 3600) / 12.

        #angle_sec = 360 * self.valeur_sec / 60
        #angle_min = 360 * ( self.valeur_min) / 60
        #angle_h   = 360 * ( self.valeur_h) / 12

        p.rotate(180)
        p.rotate(angle_sec)
        #p.setPen(QtCore.Qt.red,4)
        pen = QPen(Qt.green, 2)
        p.setPen(pen)
        p.drawLine(0, 0, 0, 0.85 * self.height() / 2)
        p.rotate(-1 * angle_sec)
        p.rotate(angle_min)
        pen = QPen(Qt.blue, 3)
        p.setPen(pen)
        p.drawLine(0, 0, 0, 0.8 * self.height() / 2)
        p.rotate(-1 * angle_min)
        p.rotate(angle_h)
        pen = QPen(Qt.red, 4)
        p.setPen(pen)
        p.drawLine(0, 0, 0, 0.6 * self.height() / 2)

        p.setBrush(QtCore.Qt.green)
        pen = QPen(Qt.green, 3)
        p.setPen(pen)
        p.translate(self.height() / 100, self.height() / 100)
        p.drawEllipse(0, 0, -1 * self.height() / 50, -1 * self.height() / 50)