Beispiel #1
0
    def draw_pointer_indicator_r(self, painter: QtGui.QPainter):
        """ 绘制指示器, 样式indicator_r """
        radius = 62
        offset = 8
        painter.save()
        painter.setOpacity(0.6)

        # QPolygon 类提供了一个使用整数精度的点向量,QPoint的集合
        pts = QtGui.QPolygon()
        pts.setPoints(3, -offset, 0, offset, 0, 0, radius)

        painter.rotate(self.start_angle)
        deg_rotate = (360 - self.start_angle - self.end_angle) / (
            self.max_value - self.min_value) * (self.value - self.min_value)
        painter.rotate(deg_rotate)

        color = self.percent_color
        if self.double_percent:
            center = (self.value == (self.max_value - self.min_value) / 2 +
                      self.min_value)
            color = self.border_color if center else self.percent_color

        pen = QtGui.QPen()
        pen.setColor(pen)
        painter.setPen(pen)
        painter.setBrush(color)
        painter.drawConvexPolygon(pts)

        # 增加绘制圆角直线,与之前三角形重叠,形成圆角指针
        pen.setCapStyle(QtCore.Qt.RoundCap)
        pen.setWidth(offset - 1)
        painter.setPen(pen)
        painter.drawLine(0, 0, 0, radius)

        painter.restore()
Beispiel #2
0
 def drawPixmapFor3d(self):
     self.pixmap3d = QPixmap(self.itemWidth, self.itemHeight)
     self.pixmap3d.fill(Qt.transparent)
     painter = QPainter()
     painter.begin(self.pixmap3d)
     painter.setRenderHint(QPainter.Antialiasing)
     pen = QPen()
     pen.setWidth(2)
     painter.setPen(pen)
     painter.setBrush(QBrush(QColor(220, 220, 220)))
     top = [QPoint(5, 10),
            QPoint(self.itemWidth - 10, 10),
            QPoint(self.itemWidth - 5, 5),
            QPoint(10, 5),
            QPoint(5, 10)]
     painter.drawConvexPolygon(*top)
     left = [QPoint(self.itemWidth - 10, 10),
             QPoint(self.itemWidth - 10, self.itemHeight - 5),
             QPoint(self.itemWidth - 5, self.itemHeight - 10),
             QPoint(self.itemWidth - 5, 5),
             QPoint(self.itemWidth - 10, 10)]
     painter.drawConvexPolygon(*left)
     painter.setBrush(QBrush())
     painter.drawRect(QRect(5, 10, self.itemWidth - 15, self.itemHeight - 15))
     painter.drawText(QRect(5, 10, self.itemWidth - 15, self.itemHeight - 15), Qt.AlignCenter, '3D')
     painter.end()
Beispiel #3
0
 def drawPixmapFor3d(self):
     self.pixmap3d = QPixmap(self.itemWidth, self.itemHeight)
     self.pixmap3d.fill(Qt.transparent)
     painter = QPainter()
     painter.begin(self.pixmap3d)
     painter.setRenderHint(QPainter.Antialiasing)
     pen = QPen()
     pen.setWidth(2)
     painter.setPen(pen)
     painter.setBrush(QBrush(QColor(220, 220, 220)))
     top = [
         QPoint(5, 10),
         QPoint(self.itemWidth - 10, 10),
         QPoint(self.itemWidth - 5, 5),
         QPoint(10, 5),
         QPoint(5, 10),
     ]
     painter.drawConvexPolygon(*top)
     left = [
         QPoint(self.itemWidth - 10, 10),
         QPoint(self.itemWidth - 10, self.itemHeight - 5),
         QPoint(self.itemWidth - 5, self.itemHeight - 10),
         QPoint(self.itemWidth - 5, 5),
         QPoint(self.itemWidth - 10, 10),
     ]
     painter.drawConvexPolygon(*left)
     painter.setBrush(QBrush())
     painter.drawRect(
         QRect(5, 10, self.itemWidth - 15, self.itemHeight - 15))
     painter.drawText(
         QRect(5, 10, self.itemWidth - 15, self.itemHeight - 15),
         Qt.AlignCenter, "3D")
     painter.end()
Beispiel #4
0
    def paintEvent(self, QPaintEvent):

        QAction("Show")

        painter = QPainter()
        painter.begin(self)
        painter.setRenderHint(QPainter.Antialiasing)
        painter.translate(self._width / 2, self._height / 2)

        painter.setPen(QtCore.Qt.NoPen)
        painter.setBrush(QBrush(self._pointercolor))

        painter.save()
        painter.rotate((2.88 * self.monitor()) + 216)
        painter.drawConvexPolygon(self.pointer)
        painter.restore()

        painter.setPen(self._textcolor)
        painter.save()
        painter.drawText(-10, (self._sidelength / 2), self._monitortext)
        painter.drawText(-10, (self._sidelength / 2) - 15, str(self.monitor()))
        painter.restore()

        painter.save()
        painter.setPen(self._tickcolor)
        painter.rotate(126)

        for i in range(17):
            painter.drawLine((self._sidelength / 2) - self._ticklength, 0,
                             (self._sidelength / 2), 0)
            painter.rotate(18)
        painter.restore()
Beispiel #5
0
    def draw_pointer_triangle(self, painter: QtGui.QPainter):
        """ 绘制指示器, 样式triangle """
        radius = 25
        offset = 40
        painter.save()

        # QPolygon 类提供了一个使用整数精度的点向量,QPoint的集合
        pts = QtGui.QPolygon()
        pts.setPoints(3, -radius / 2, offset, radius / 2, offset, 0,
                      radius + offset)

        painter.rotate(self.start_angle)
        deg_rotate = (360 - self.start_angle - self.end_angle) / (
            self.max_value - self.min_value) * (self.value - self.min_value)
        painter.rotate(deg_rotate)

        color = self.percent_color
        if self.double_percent:
            center = (self.value == (self.max_value - self.min_value) / 2 +
                      self.min_value)
            color = self.border_color if center else self.percent_color

        painter.setPen(color)
        painter.setBrush(color)
        painter.drawConvexPolygon(pts)

        painter.restore()
 def drawPixmapFor3d(self, painter: QPainter, width: int,
                     height: int) -> None:
     font = QFont()
     font.setPixelSize(height - 10)
     pen = QPen()
     pen.setWidth(2)
     painter.setPen(pen)
     painter.setBrush(QBrush(QColor(220, 220, 220)))
     top = [
         QPoint(5, 5),
         QPoint(width - 10, 5),
         QPoint(width - 5, 0),
         QPoint(10, 0),
         QPoint(5, 5),
     ]
     painter.drawConvexPolygon(*top)
     left = [
         QPoint(width - 10, 5),
         QPoint(width - 10, height - 5),
         QPoint(width - 5, height - 10),
         QPoint(width - 5, 0),
         QPoint(width - 10, 5),
     ]
     painter.drawConvexPolygon(*left)
     painter.setBrush(QBrush())
     painter.setFont(font)
     painter.drawRect(QRect(5, 5, width - 15, height - 10))
     painter.drawText(QRect(5, 4, width - 15, height - 10), Qt.AlignCenter,
                      "3D")
     painter.end()
Beispiel #7
0
 def fnk(pai: QPainter, sogi: QStyleOptionGraphicsItem, wi=None,
         offset=(0, 0)):
     pen = QPen(constants.FOREGROUND_COLOR)
     bru = QBrush(constants.FOREGROUND_COLOR)
     pai.setBrush(bru)
     pai.setPen(pen)
     verts = [QPointF(x + offset[0], y + offset[1]) for (x, y) in vertices]
     pai.drawConvexPolygon(*verts)
Beispiel #8
0
    def drawNeedle(self):
        painter = QPainter(self)
        painter.setRenderHint(QPainter.Antialiasing)
        painter.translate(self.width() / 2, self.height() / 2)
        painter.setPen(Qt.NoPen)
        painter.setBrush(self.needleColor)
        painter.rotate(((self.value - self.valueOffset - self.valueMin) *
                        self.scaleAngleSize /
                        (self.valueMax - self.valueMin)) + 90 +
                       self.scaleAngleStartValue)

        painter.drawConvexPolygon(self.valueNeedle[0])
Beispiel #9
0
    def paint(self, painter: QPainter, option: QStyleOptionGraphicsItem,
              widget: QWidget) -> None:
        visible = self._position in self._game_engine.get_player_visible_tiles(
            self._game_engine.get_game_history().active_player)

        if not visible:
            painter.setOpacity(FOG_OF_WAR_OPACITY)
            painter.setPen(QPen(Qt.white, 0, Qt.SolidLine))

            painter.setBrush(QBrush(QColor(70, 70, 70), Qt.SolidPattern))
            corners = self.get_corners()
            painter.drawConvexPolygon(*corners)
Beispiel #10
0
    def drawNeedle(self):
        painter = QPainter(self)
        painter.setRenderHint(QPainter.Antialiasing)

        painter.translate(self.width() / 2, self.height() / 2)
        painter.setPen(Qt.NoPen)
        painter.setBrush(self.needleColor)
        painter.rotate((
            (self.gaugeValue - self.minGaugeValue) * self.gaugeArcAngle /
            (self.maxGaugeValue - self.minGaugeValue)) + 90 +
                       self.gaugeRotation)

        painter.drawConvexPolygon(self.needle[0])
Beispiel #11
0
    def draw_needle(self):
        painter = QPainter(self)
        # painter.setRenderHint(QtGui.QPainter.HighQualityAntialiasing)
        painter.setRenderHint(QPainter.Antialiasing)
        # Koordinatenursprung in die Mitte der Flaeche legen
        painter.translate(self.width() / 2, self.height() / 2)
        painter.setPen(Qt.NoPen)
        painter.setBrush(self.NeedleColor)
        painter.rotate(((self.value - self.value_offset - self.value_min) *
                        self.scale_angle_size /
                        (self.value_max - self.value_min)) + 90 +
                       self.scale_angle_start_value)

        painter.drawConvexPolygon(self.value_needle[0])
Beispiel #12
0
 def drawNeedle(self):
     side = min(self.width(), self.height())
     painter = QPainter(self)
     painter.setRenderHint(QPainter.Antialiasing)
     painter.translate(self.width() / 2, self.height() / 2)
     painter.scale(side / 256.0, side / 256.0)
     painter.save()
     painter.rotate(self.value2angle(self.currValue))
     painter.setBrush(Qt.red)
     painter.drawConvexPolygon(QPointF(0, -2), QPointF(100, 0),
                               QPointF(0, 2), QPointF(-30, 5),
                               QPointF(-30, -5))
     painter.setBrush(Qt.black)
     painter.drawEllipse(QPoint(0, 0), 5, 5)
     painter.restore()
Beispiel #13
0
 def get_preview(cls, w, h):
     pixmap = QPixmap(w, h)
     pixmap.fill(QColor(0, 0, 0, 0))
     painter = QPainter()
     pen = QPen(QColor(0, 0, 0, 255))
     pen.setWidth(2)
     brush = QBrush()
     brush.setColor(QColor("#c84737"))
     brush.setStyle(Qt.SolidPattern)
     painter.begin(pixmap)
     painter.setPen(pen)
     painter.setBrush(brush)
     painter.drawConvexPolygon(QPoint(w * 0.5, 2), QPoint(w - 2, h * 0.5),
                               QPoint(w * 0.5, h - 2), QPoint(2, h * 0.5))
     painter.end()
     return pixmap
Beispiel #14
0
    def paintEvent(self, event):
        side = 0.8 * min(self.width(), self.height())

        painter = QPainter(self)
        painter.setRenderHint(QPainter.Antialiasing)
        painter.translate(self.width() / 2, self.height() / 2 / 0.95)
        painter.scale(side / 200.0 * 0.95, side / 200.0 * 0.95)

        painter.setPen(Qt.NoPen)

        painter.setBrush(self.ref_color)
        painter.save()
        painter.rotate(self.refValue)
        painter.drawConvexPolygon(self.hand)
        painter.restore()

        painter.setBrush(self.color)
        painter.save()
        painter.rotate(self.value - self.refValue)
        painter.drawConvexPolygon(self.hand)
        painter.restore()

        painter.save()
        painter.setPen(QColor(0, 0, 0))

        for i in range(27):
            painter.drawLine(88, 0, 92, 0)
            painter.rotate(15)

        painter.restore()
        painter.save()
        painter.setPen(QColor(0, 0, 0))
        painter.rotate(0.0)
        for i in range(9):
            painter.drawLine(88, 0, 96, 0)
            painter.rotate(45.0)

        painter.restore()

        painter.setPen(QColor(0, 0, 0))
        font = painter.font()
        font.setPointSize(font.pointSize() * 1.2)
        painter.setFont(font)
        painter.drawText(QRectF(-7.5, 100, 30, 20), '180°')
        painter.drawText(QRectF(-5, -110, 35, 20), '0°')
        painter.drawText(QRectF(-125, -5, 30, 20), '270°')
        painter.drawText(QRectF(105, -5, 35, 20), '90°')
Beispiel #15
0
    def paintEvent(self, event):

        side = min(self.width(), self.height())
        time = QTime.currentTime()
        time = time.addSecs(self.timeZoneOffset * 3600)

        painter = QPainter()
        painter.begin(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(QBrush(self.hourColor))

        painter.save()
        painter.rotate(30.0 * ((time.hour() + time.minute() / 60.0)))
        painter.drawConvexPolygon(self.hourHand)
        painter.restore()

        painter.setPen(self.hourColor)

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

        painter.setPen(Qt.NoPen)
        painter.setBrush(QBrush(self.minuteColor))

        painter.save()
        painter.rotate(6.0 * (time.minute() + time.second() / 60.0))
        painter.drawConvexPolygon(self.minuteHand)
        painter.restore()

        painter.setPen(QPen(self.minuteColor))

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

        painter.end()
Beispiel #16
0
    def paintEvent(self, event):

        side = min(self.width(), self.height())
        time = QTime.currentTime()
        time = time.addSecs(self.timeZoneOffset * 3600)

        painter = QPainter()
        painter.begin(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(QBrush(self.hourColor))

        painter.save()
        painter.rotate(30.0 * ((time.hour() + time.minute() / 60.0)))
        painter.drawConvexPolygon(self.hourHand)
        painter.restore()

        painter.setPen(self.hourColor)

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

        painter.setPen(Qt.NoPen)
        painter.setBrush(QBrush(self.minuteColor))

        painter.save()
        painter.rotate(6.0 * (time.minute() + time.second() / 60.0))
        painter.drawConvexPolygon(self.minuteHand)
        painter.restore()

        painter.setPen(QPen(self.minuteColor))

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

        painter.end()
Beispiel #17
0
    def paintEvent(self, event):
        if self.allowed_fun():
            p = QPainter(self)
            p.setPen(Qt.NoPen)
            w, h = self.width(), self.height()
            points = [QPoint(0, 0), QPoint(w, 0), QPoint(0, h), QPoint(w, h)]

            p.setBrush(self.upper)
            p.drawConvexPolygon(QPolygon(points[:3]))
            p.setBrush(self.lower)
            p.drawConvexPolygon(QPolygon(points[1:]))

            p.setPen(Qt.black)
            font = QFont('Arial', 8)
            p.setFont(font)
            p.drawText(2, 2 + h / 2,
                       get_kana(KANA_X_MAX - 1 - self.col, self.row, KATA))
            p.drawText(2 + w / 2, h - 2,
                       get_kana(KANA_X_MAX - 1 - self.col, self.row, HIRA))
        else:
            super().paintEvent(event)
Beispiel #18
0
    def paintEvent(self, event):
        global real_time, minotaur_standard_time

        actual_time_updater()

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

        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()
        hour_adjust = 30.0 * (
            (int(real_time.hour) + int(real_time.minute) / 60.0))
        hour = math.floor(hour_adjust / 30.0)
        painter.rotate(hour_adjust)
        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()
        minute_adjust = 6.0 * (
            (int(real_time.minute) + int(real_time.second) / 60.0))
        if minute_adjust < 0:
            minute_adjust += 360
        minute = math.floor(minute_adjust / 6.0)
        painter.rotate(minute_adjust)
        painter.drawConvexPolygon(AnalogClock.minuteHand)
        painter.restore()

        painter.setPen(Qt.NoPen)
        painter.setBrush(AnalogClock.secondColor)

        painter.save()
        second_adjust = 6.0 * int(real_time.second)
        if second_adjust < 0:
            second_adjust += 360
        second = math.floor(second_adjust / 6.0)
        painter.rotate(second_adjust)
        painter.drawConvexPolygon(AnalogClock.secondHand)
        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)
Beispiel #19
0
    def paintEvent(self, event):
        side = min(self.width(), self.height())

        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(AnalogPosition.positionHandColor)

        painter.save()
        painter.rotate(self.angle)

        painter.drawConvexPolygon(AnalogPosition.positionHand)
        painter.restore()

        painter.setPen(AnalogPosition.positionHandColor)

        for j in range(32):
            painter.drawLine(92, 0, 96, 0)
            painter.rotate(11.25)
Beispiel #20
0
    def paintEvent(self, event):
        side = min(self.width(), self.height())

        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(AnalogPosition.positionHandColor)

        painter.save()
        painter.rotate(self.angle)

        painter.drawConvexPolygon(AnalogPosition.positionHand)
        painter.restore()

        painter.setPen(AnalogPosition.positionHandColor)

        for j in range(32):
            painter.drawLine(92, 0, 96, 0)
            painter.rotate(11.25)
Beispiel #21
0
    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)

        # Hour hand
        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)

        # Minute hand
        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)

        # Second hand
        painter.setPen(Qt.NoPen)
        painter.setBrush(AnalogClock.secondColor)

        painter.save()
        painter.rotate(6.0 * time.second())
        painter.drawConvexPolygon(AnalogClock.secondHand)
        painter.restore()
Beispiel #22
0
    def paintEvent(self, e): 
        time = QTime.currentTime() 
        qp = QPainter()
 
        qp.begin(self)
        #qp.setRenderHint(QPainter.Antialiasing)  # 开启这个抗锯齿,会很占cpu的!
        qp.translate(self.width() / 2, self.height() / 2) 
        qp.scale(self.side / 200.0, self.side / 200.0)
  
        qp.setPen(QtCore.Qt.NoPen)
        qp.setBrush(self.hourColor)
        qp.save()
        qp.rotate(30.0 * ((time.hour() + time.minute()/ 60.0)))
        qp.drawConvexPolygon(self.hourHand)
        qp.restore()
         
        qp.setPen(self.minuteColor)
        qp.drawText(0,0,"Testdddddddddddddd")
        for i in range(12): 
            qp.drawLine(88, 0, 96, 0)
            qp.rotate(30.0) 
         
        qp.setPen(QtCore.Qt.NoPen)
        qp.setBrush(self.minuteColor)
        qp.save()
         
        qp.rotate(6.0 * ((time.minute() + (time.second()+time.msec()/1000.0) / 60.0)))
        qp.drawConvexPolygon(self.minuteHand)
        qp.restore()
         
         
        qp.setPen(self.minuteColor)
        for i in range(60): 
            if (i % 5) is not 0:
                qp.drawLine(92, 0, 96, 0)
            qp.rotate(6.0) 
        qp.setPen(QtCore.Qt.NoPen)
        qp.setBrush(self.secondColor)
        qp.save()
        qp.rotate(6.0*(time.second()+time.msec()/1000.0))
        qp.drawConvexPolygon(self.secondHand)
        qp.restore() 
        qp.end() 
Beispiel #23
0
 def paintShape(self, painter: QPainter):
     painter.setRenderHint(QPainter.Antialiasing)
     painter.setPen(self.pen())
     painter.setBrush(self.brush())
     painter.drawConvexPolygon(self._polygon)
Beispiel #24
0
    def paintEvent(self, event):
        hourHand = [QPoint(7, 8), QPoint(-7, 8), QPoint(0, -40)]
        minuteHand = [QPoint(7, 8), QPoint(-7, 8), QPoint(0, -70)]
        secondHand = [QPoint(0, 8), QPoint(0, -80)]

        hourColor = QColor(127, 0, 127)
        minuteColor = QColor(0, 127, 127, 191)
        secondColor = QColor(255, 0, 0, 191)

        side = min(self.width(), self.height())
        time = QTime.currentTime()  # static function
        time = time.addSecs(self.timeZoneOffset)

        painter = QPainter(self)
        painter.setRenderHint(QPainter.Antialiasing, True)
        painter.translate(self.width() / 2, self.height() / 2)
        painter.scale(side / 200.0, side / 200.0)

        # Draw circle
        radialGradient = QRadialGradient(0, 0, 100, -40,
                                         -40)  # center, radius, focalPoint
        radialGradient.setColorAt(0.0, Qt.white)
        radialGradient.setColorAt(1., self.backgroundColor)

        painter.setBrush(radialGradient)
        painter.setPen(QPen(Qt.darkGray, 0))  # darkGray cosmetic pen
        painter.drawEllipse(QRectF(-97, -97, 194, 194))

        # Draw minute tick
        painter.setPen(minuteColor)
        for j in range(60):
            if (j % 5) != 0:
                painter.drawLine(92, 0, 96, 0)
            painter.rotate(6.0)

        # draw hour hand
        painter.setPen(Qt.NoPen)
        painter.setBrush(hourColor)

        painter.save()
        painter.rotate(30.0 * ((time.hour() + time.minute() / 60.0)))
        painter.drawConvexPolygon(hourHand)
        painter.restore()

        # draw hour tick
        painter.setPen(hourColor)
        for i in range(12):
            painter.drawLine(88, 0, 96, 0)
            painter.rotate(30.0)

        # draw mimute hand
        painter.setPen(Qt.NoPen)
        painter.setBrush(minuteColor)

        painter.save()
        painter.rotate(6.8 * (time.minute() + time.second() / 60.0))
        painter.drawConvexPolygon(minuteHand)
        painter.restore()

        # Draw second hand
        painter.setPen(secondColor)

        painter.save()
        painter.rotate(6.0 * time.second())
        painter.drawLine(secondHand[0], secondHand[1])
        painter.restore()

        self.updated.emit(time)
Beispiel #25
0
    def paintEvent(self, event):
        # 时钟指针坐标点
        hourPoint = [QPoint(7, 8), QPoint(-7, 8), QPoint(0, -30)]
        minPoint = [QPoint(7, 8), QPoint(-7, 8), QPoint(0, -65)]
        secPoint = [QPoint(7, 8), QPoint(-7, 8), QPoint(0, -80)]
        # 时钟指针颜色
        hourColor = QColor(200, 100, 0, 200)
        minColor = QColor(0, 127, 127, 150)
        secColor = QColor(0, 160, 230, 150)

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

        painter = QPainter(self)
        painter.setRenderHint(QPainter.Antialiasing)
        painter.translate(self.width() / 2,
                          self.height() / 2)  # painter坐标系原点移至widget中央
        painter.scale(side / 200,
                      side / 200)  # 缩放painterwidget坐标系,使绘制的时钟位于widge中央,即钟表支持缩放

        # 绘制小时和分钟刻度线
        painter.save()
        for i in range(0, 60):
            if (i % 5) != 0:
                painter.setPen(minColor)
                painter.drawLine(92, 0, 96, 0)  # 绘制分钟刻度线
            else:
                painter.setPen(hourColor)
                painter.drawLine(88, 0, 96, 0)  # 绘制小时刻度线
            painter.rotate(360 / 60)
        painter.restore()

        # 绘制小时数字
        painter.save()
        font = painter.font()
        font.setBold(True)
        painter.setFont(font)
        pointSize = font.pointSize()
        painter.setPen(hourColor)
        nhour = 0
        radius = 100
        for i in range(0, 12):
            nhour = i + 3  # 按QT-Qpainter的坐标系换算,3小时的刻度线对应坐标轴0度
            if nhour > 12:
                nhour = nhour - 12

            x = radius * 0.8 * cos(i * 30 * pi / 180.0) - pointSize
            y = radius * 0.8 * sin(i * 30 * pi / 180.0) - pointSize / 2.0
            width = pointSize * 2
            height = pointSize
            painter.drawText(QRectF(x, y, width, height), Qt.AlignCenter,
                             str(nhour))
        painter.restore()

        time = QTime.currentTime()

        # 绘制小时指针
        painter.save()
        painter.setPen(Qt.NoPen)  # 无轮廓线
        painter.setBrush(hourColor)  # 填充色
        painter.rotate(30 *
                       (time.hour() +
                        time.minute() / 60))  # 每圈360° = 12h 即:旋转角度 = 小时数 * 30°
        print(time.hour())
        painter.drawConvexPolygon(QPolygonF(hourPoint))
        painter.restore()

        # 绘制分钟指针
        painter.save()
        painter.setPen(Qt.NoPen)  # 无轮廓线
        painter.setBrush(minColor)  # 填充色
        painter.rotate(6 *
                       (time.minute() +
                        time.second() / 60))  # 每圈360° = 60m 即:旋转角度 = 分钟数 * 6°
        painter.drawConvexPolygon(QPolygonF(minPoint))
        painter.restore()

        # 绘制秒钟指针
        painter.save()
        painter.setPen(Qt.NoPen)  # 无轮廓线
        painter.setBrush(secColor)  # 填充色
        painter.rotate(6 * time.second())
        painter.drawConvexPolygon(
            QPolygonF(secPoint))  # 每圈360° = 60s 即:旋转角度 = 秒数 * 6°
        painter.restore()
Beispiel #26
0
    def paintEvent(self, event):

        global MSG

        if self._tip:
            QToolTip.showText(self.mapToGlobal(self._tip), self.digitTime(),
                              self)

        if self._tb:
            self._tb.setText(self.digitTime())

        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)

        painter.setPen(Qt.NoPen)
        painter.setBrush(AnalogClock.secondColor)

        painter.save()
        painter.rotate(6.0 * time.second())
        painter.drawConvexPolygon(AnalogClock.secondHand)
        painter.restore()

        painter.setPen(AnalogClock.secondColor)

        for j in range(60):
            if (j % 5) != 0:
                painter.drawLine(92, 0, 96, 0)
            painter.rotate(6.0)
Beispiel #27
0
    def paintEvent(self, event):
        side = min(self.width(), self.height())  # 最小边
        time = QTime.currentTime()  # 获取系统当前时间

        painter = QPainter(self)
        # 抗锯齿
        painter.setRenderHint(QPainter.Antialiasing, True)
        painter.setRenderHint(QPainter.HighQualityAntialiasing, True)
        painter.setRenderHint(QPainter.SmoothPixmapTransform, True)

        painter.translate(self.width() / 2, self.height() / 2)  # 坐标偏置

        # painter.setPen(Qt.NoPen)
        painter.setBrush(self.hourColor)

        # 表盘主背景
        self.target = QPixmap(self.size())
        self.target.fill(Qt.transparent)

        imgB = self.imgFile
        p = QPixmap(imgB).scaled(200, 200, Qt.KeepAspectRatioByExpanding,
                                 Qt.SmoothTransformation)

        path = QPainterPath()
        path.addRoundedRect(-100, -100, 200, 200, 50, 50)
        painter.setClipPath(path)
        painter.drawPixmap(-100, -100, p)

        # 表盘中心图标
        imgM = self.imgFile_M
        pm = QPixmap(imgM).scaled(50, 50, Qt.KeepAspectRatioByExpanding,
                                  Qt.SmoothTransformation)
        painter.drawPixmap(-25, -60, pm)
        # 整点刻度
        painter.setPen(self.hourColor)
        for i in range(12):
            painter.drawLine(QPointF(85, 0), QPointF(96, 0))
            # painter.drawLine(88, 0, 96, 0)
            painter.rotate(30.0)

        painter.setPen(self.minuteColor)
        for j in range(60):  # 小刻度
            if (j % 5) != 0:
                painter.drawLine(QPointF(85, 0), QPointF(92, 0))
                # painter.drawLine(92, 0, 96, 0)
            painter.rotate(6.0)

        painter.setPen(Qt.NoPen)
        painter.setBrush(self.hourColor)

        painter.save()
        painter.rotate(30.0 * ((time.hour() + time.minute() / 60.0)))
        painter.drawConvexPolygon(self.hourHand)  # 画三角形
        painter.restore()

        painter.setPen(Qt.NoPen)
        painter.setBrush(self.minuteColor)
        painter.save()

        painter.rotate(6.0 * (time.minute() + time.second() / 60.0))
        painter.drawConvexPolygon(self.minuteHand)
        painter.restore()

        painter.setPen(QColor(0, 0, 0))
        painter.drawEllipse(-5, -5, 10, 10)  # 画圆。参数是外接矩形左上点和长宽
Beispiel #28
0
    def paintEvent(self, e):
        qp = QPainter(self)
        #qp.begin(self)
        X = self.X
        Y = self.Y
        qp.setPen(Qt.black)  # mark standing point
        qp.drawPoint(X, Y)
        #qp.drawLine(0,self.height/2,self.width, self.height/2)

        direction = self.direction
        gamma = self.player.hview
        alpha = self.player.vview
        qp.setPen(Qt.green)
        drawx_counter = 0
        last_low = 0
        last_high = 0
        last_x = 0
        #print('angel%d'%direction)
        for ray in range(1, self.width + 1):  # range(-gamma//2, gamma//2+1):
            theta = gamma / self.width * ray - gamma / 2
            x = X
            y = Y
            dx = 1
            dy = dx * math.tan(math.radians(theta))
            qp.setPen(Qt.green)
            path_counter = 0
            while x < self.width and x > -10 and y < self.height and y > -10 and self.level.level[
                    int(x)][int(y)].high == 0:
                dt = self.dt
                if direction >= 0:
                    y = y + dy + dx / dt
                    x = x + dx - dy / dt
                else:
                    y = y - dy - dx / dt
                    x = x - dx + dy / dt
                if path_counter % 2 == 0:
                    qp.drawPoint(x, y)
                path_counter += 1
            qp.setPen(Qt.red)
            qp.drawPoint(x, y)

            p = abs((y - Y) * math.cos(math.radians(theta - direction))) + abs(
                (x - X) * math.sin(math.radians(theta - direction)))
            #p = math.hypot(x - X, y - Y)	# slow but more intuitive
            #p = abs( p * math.cos(math.radians(theta)))
            if p == 0: continue  # the case when player is outside map

            wall = 60
            halfview = abs(p * math.tan(alpha / 2))
            if halfview > wall - self.player.height:  # ceiling
                upperview = (wall - self.player.height) / halfview
            else:  # sees entire upper part of wall
                upperview = 1 / 2

            if halfview > self.player.height:  # sees floor
                lowerview = self.player.height / halfview / 2
            else:  # sees entire lower part of wall
                lowerview = 1 / 2
            #adrawx = round(self.width/gamma * drawx_counter)
            drawx = drawx_counter
            #print(self.height/2 + self.height * upperview, self.height/2 - self.height * lowerview)
            drawy_low = self.height / 2 - self.height * upperview
            drawy_high = self.height / 2 + self.height * lowerview
            if drawx_counter > 0:  # first line on the left is omitted
                polygon = QPolygonF()
                polygon.append(QPointF(last_x, last_low))
                polygon.append(QPointF(last_x, last_high))
                polygon.append(QPointF(drawx, drawy_high))
                polygon.append(QPointF(drawx, drawy_low))
                wallcolor = QColor(255, p / self.diagonal * 255,
                                   p / self.diagonal * 255)
                qp.setPen(wallcolor)
                qp.drawConvexPolygon(polygon)
                qp.setBrush(QBrush(wallcolor))

            last_low = drawy_low
            last_high = drawy_high
            last_x = drawx
            #qp.drawLine(drawx, self.height/2 - self.height * upperview, drawx, self.height/2 + self.height * lowerview)
            drawx_counter += 1
        qp.end()
Beispiel #29
0
    def paintEvent(self, _: QPaintEvent):
        hourHand = [QPoint(0, 10), QPoint(3, 6), QPoint(0, -40), QPoint(-3, 6)]
        minuteHand = [
            QPoint(0, 15),
            QPoint(3, 4),
            QPoint(0, -70),
            QPoint(-3, 4)
        ]
        secondHand = [
            QPoint(0, 20),
            QPoint(2, 3),
            QPoint(0, -90),
            QPoint(-2, 3)
        ]
        hourColor = QColor(255, 0, 0)
        minuteColor = QColor(0, 255, 0, 191)
        secondColor = QColor(255, 127, 0, 191)

        side = min(self.width(), self.height())
        # time = self._get_ntp_time()
        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(hourColor)

        painter.save()
        painter.rotate(30.0 * ((time.hour() + time.minute() / 60.0)))
        painter.drawConvexPolygon(QPolygon(hourHand))
        painter.restore()

        painter.setPen(hourColor)

        for _ in range(12):
            painter.drawLine(88, 0, 96, 0)
            painter.rotate(30.0)

        painter.setPen(Qt.NoPen)
        painter.setBrush(minuteColor)

        painter.save()
        painter.rotate(6.0 * (time.minute() + time.second() / 60.0))
        painter.drawConvexPolygon(QPolygon(minuteHand))
        painter.restore()

        painter.setPen(minuteColor)

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

        painter.setPen(Qt.NoPen)
        painter.setBrush(secondColor)

        painter.save()
        painter.rotate(6.0 * time.second())
        painter.drawConvexPolygon(QPolygon(secondHand))
        painter.restore()