示例#1
0
	def paintEvent(self,event=None):
	    
	    painter = QPainter(self)
	    pixmap=QPixmap(":/images/wheelfinal.png")

	    #painter.begin(self)
	    #painter.drawPixmap(QtCore.QRect(self.left, self.top, self.width, self.height), self.pixmap)
	    painter.drawPixmap(self.rect(), pixmap)
	    self.resize(pixmap.width(),pixmap.height())
	    
	    pen = QPen(Qt.red, 3)
	    painter.setPen(pen)
	    
	    painter.drawArc (self.disc_center-int(self.distance_from_center(self.points[0])) , 
	                        self.disc_center - int(self.distance_from_center (self.points[0])) , 
	                        2*int(self.distance_from_center(self.points[0])) , 
	                        2*int(self.distance_from_center(self.points[0])) , 
	                        int(16*self.hue_min) , 
	                        int(16*(self.hue_max-self.hue_min)))#arc joining point 0 and point 1
	    painter.drawLine(int(self.points[0][0]),int(self.points[0][1]),int(self.points[3][0]),int(self.points[3][1]))#line joining point 0 and point 3
	    painter.drawArc(self.disc_center-int(self.distance_from_center(self.points[2])) , 
	                        self.disc_center - int(self.distance_from_center (self.points[2])) , 
	                        2*int(self.distance_from_center(self.points[2])) , 
	                        2*int(self.distance_from_center(self.points[2])) , 
	                        int(16*self.hue_min) , 
	                        int(16*(self.hue_max-self.hue_min)))#arc joining point 2 and 3
	    painter.drawLine(int(self.points[1][0]),int(self.points[1][1]),int(self.points[2][0]),int(self.points[2][1]))#line joining point 1 and 2
	    
	    self.update()
示例#2
0
 def drawValue(self, p: QPainter, baseRect: QRectF, value: float, delta: float):
     if value == self.m_min:
         return
     if self.m_barStyle == self.BarStyle.EXPAND:
         p.setBrush(self.palette().highlight())
         p.setPen(QPen(self.palette().shadow().color(), self.m_dataPenWidth))
         radius = (baseRect.height() / 2) / delta
         p.drawEllipse(baseRect.center(), radius, radius)
         return
     if self.m_barStyle == self.BarStyle.LINE:
         p.setPen(QPen(self.palette().highlight().color(), self.m_dataPenWidth))
         p.setBrush(Qt.NoBrush)
         if value == self.m_max:
             p.drawEllipse(baseRect.adjusted(self.m_outlinePenWidth / 2, self.m_outlinePenWidth / 2,
                                             -self.m_outlinePenWidth / 2, -self.m_outlinePenWidth / 2))
         else:
             arcLength = 360 / delta
             p.drawArc(baseRect.adjusted(self.m_outlinePenWidth / 2, self.m_outlinePenWidth / 2,
                                         -self.m_outlinePenWidth / 2, -self.m_outlinePenWidth / 2),
                       int(self.m_nullPosition * 16),
                       int(-arcLength * 16))
         return
     dataPath = QPainterPath()
     dataPath.setFillRule(Qt.WindingFill)
     if value == self.m_max:
         dataPath.addEllipse(baseRect)
     else:
         arcLength = 360 / delta
         dataPath.moveTo(baseRect.center())
         dataPath.arcTo(baseRect, self.m_nullPosition, -arcLength)
         dataPath.lineTo(baseRect.center())
     p.setBrush(self.palette().highlight())
     p.setPen(QPen(self.palette().shadow().color(), self.m_dataPenWidth))
     p.drawPath(dataPath)
示例#3
0
    def paintEvent(self, event=None):

        painter = QPainter(self)
        pixmap = QPixmap(":/images/wheelfinal.png")

        # painter.begin(self)
        #painter.drawPixmap(QtCore.QRect(self.left, self.top, self.width, self.height), self.pixmap)
        painter.drawPixmap(self.rect(), pixmap)
        self.resize(pixmap.width(), pixmap.height())

        pen = QPen(Qt.red, 3)
        painter.setPen(pen)

        painter.drawArc(self.disc_center-int(self.distance_from_center(self.points[0])),
                        self.disc_center -
                        int(self.distance_from_center(self.points[0])),
                        2*int(self.distance_from_center(self.points[0])),
                        2*int(self.distance_from_center(self.points[0])),
                        int(16*self.hue_min),
                        int(16*(self.hue_max-self.hue_min)))  # arc joining point 0 and point 1
        painter.drawLine(int(self.points[0][0]), int(self.points[0][1]), int(
            self.points[3][0]), int(self.points[3][1]))  # line joining point 0 and point 3
        painter.drawArc(self.disc_center-int(self.distance_from_center(self.points[2])),
                        self.disc_center -
                        int(self.distance_from_center(self.points[2])),
                        2*int(self.distance_from_center(self.points[2])),
                        2*int(self.distance_from_center(self.points[2])),
                        int(16*self.hue_min),
                        int(16*(self.hue_max-self.hue_min)))  # arc joining point 2 and 3
        painter.drawLine(int(self.points[1][0]), int(self.points[1][1]), int(
            self.points[2][0]), int(self.points[2][1]))  # line joining point 1 and 2

        self.update()
示例#4
0
    def paintEvent(self, event):
        painter = QPainter()
        painter.begin(self)

        painter.setPen(Qt.blue)
        # 绘制弧:参数表示 x、y坐标和宽高
        rect = QRect(0, 10, 200, 200)
        # 单位alen:等于1/16度
        painter.drawArc(rect, 0, 50 * 16)

        # 通过弧长绘制圆
        painter.setPen(Qt.red)
        painter.drawArc(220, 10, 100, 100, 0, 360 * 16)

        # 绘制带弦的弧
        painter.drawChord(10, 120, 100, 100, 13, 130 * 16)

        # 绘制扇形
        painter.drawPie(10, 240, 100, 100, 13, 130 * 16)

        # 绘制五边形
        point1 = QPoint(140, 380)
        point2 = QPoint(270, 420)
        point3 = QPoint(290, 512)
        point4 = QPoint(290, 588)
        point5 = QPoint(200, 533)

        painter.drawPolygon(QPolygon([point1, point2, point3, point4, point5]))

        # 绘制图形
        image = QImage('./images/color.png')
        painter.drawImage(QRect(400, 400, image.width(), image.height()),
                          image)
        painter.end()
示例#5
0
    def paintEvent(self, QPaintEvent):
        painter = QPainter()
        painter.begin(self)
        painter.setPen(Qt.blue)
        #绘制弧
        #左上角位置,宽度,高度
        rect = QRect(0, 10, 100, 100)
        #alen:1 alen=1/16度 45*16=720
        painter.drawArc(rect, 0, 50 * 16)

        #绘制圆
        painter.setPen(Qt.red)
        painter.drawArc(120, 10, 100, 100, 0, 360 * 16)
        #绘制带弦的弧
        painter.drawChord(10, 120, 100, 100, 12, 130 * 16)
        #绘制扇形
        painter.drawPie(10, 240, 100, 100, 12, 130 * 16)
        #绘制椭圆
        painter.drawEllipse(120, 120, 150, 100)
        #5边形
        point1 = QPoint(140, 380)
        point2 = QPoint(270, 420)
        point3 = QPoint(219, 512)
        point4 = QPoint(290, 588)
        point5 = QPoint(120, 533)
        polygon = QPolygon([point1, point2, point3, point4, point5])
        painter.drawPolygon(polygon)

        #绘制图像
        image = QImage('./school.jpg')
        rect = QRect(300, 200, image.width() / 2, image.height() / 2)
        painter.drawImage(rect, image)
        # image.save('./school1.png')
        painter.end()
 def paint(self,
           painter: QPainter,
           styleOptionGraphicsItem: QStyleOptionGraphicsItem,
           widget: QWidget = None):
     painter.setPen(self._pen)
     painter.setBrush(QBrush())
     painter.drawArc(self.rect(), self.startAngle(), self.spanAngle())
    def paintEvent(self, e):
        painter = QPainter(self)  # Grey background

        fontSize = int(self.width() * 0.1)
        padding = 4
        painter.setPen(QPen(self.textColor, 1, Qt.SolidLine))
        painter.setFont(QFont("Monospace", fontSize))
        fontHeight = int(fontSize * 1.5)

        valueText = str(self.value)[0:6]
        painter.drawText(QRect(0, 0, self.width(),
                               self.height() * 0.9), Qt.AlignCenter, valueText)

        painter.setFont(QFont("Monospace", fontSize / 2))
        painter.drawText(
            QRect(0, (self.height() * 0.9 / 2) + fontHeight / 2 + padding,
                  self.width(), fontHeight / 2), Qt.AlignCenter, self.title)

        theta = clamp(
            interpolate(self.value, self.minValue, self.maxValue, 0, 360 * 16),
            0, 360 * 16)
        barPadding = 20

        painter.setPen(QPen(self.barColor, 30, Qt.SolidLine))
        painter.translate(0, self.height())
        painter.rotate(-90)

        painter.drawArc(barPadding, barPadding,
                        self.width() - 2 * barPadding,
                        self.height() - 2 * barPadding, 0, -theta)
示例#8
0
文件: ringbar.py 项目: bsberry/stlib
    def paintEvent(self, event):
        epyqlib.widgets.abstractwidget.AbstractWidget.paintEvent(self, event)

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

        diameter = self.dimension() - self.tweaked_thickness()
        radius = diameter / 2

        rectangle = QRectF(-radius, -radius, diameter, diameter)

        maximum = max(abs(self.maximum), abs(self.minimum))

        span_angle = self.angle_span * (self.value / maximum)

        if self.clockwise:
            span_angle = -span_angle

        pen = QPen()
        pen.setWidthF(self.tweaked_thickness())
        pen.setCapStyle(Qt.RoundCap)

        pen.setColor(self.background_color)
        painter.setPen(pen)
        painter.drawEllipse(rectangle)

        pen.setColor(self.color)
        painter.setPen(pen)

        qt_span = arc_angle(span_angle)
        if qt_span == 0:
            qt_span = 1

        painter.drawArc(rectangle, arc_angle(self.zero_angle), qt_span)
示例#9
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,
                            "PyQt by\nRiverbank Computing")
                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))
示例#10
0
 def paintEvent(self, event):
     painter = QPainter()
     painter.begin(self)
     painter.setRenderHint(QPainter.Antialiasing)
     painter.setPen(QtCore.Qt.green)
     painter.setBrush(QtCore.Qt.white)
     painter.drawArc(100, 70, 300, 300, 0 * 16, 90 * 16)
示例#11
0
    def paintEvent(self, event):
        painter = QPainter()
        painter.begin(self)

        if self.tipo_dibujo == 'círculo':
            ancho = self.posicion_1[0] - self.posicion_2[0]
            alto = self.posicion_1[1] - self.posicion_2[1]

            rectangulo = QRect(self.posicion_1[0], self.posicion_1[1], ancho,
                               alto)
            angulo_inicio = 0
            longitud_arco = 360 * 16
            painter.drawArc(rectangulo, angulo_inicio, longitud_arco)

        if self.tipo_dibujo == 'rectángulo':
            ancho = self.posicion_2[0] - self.posicion_1[0]
            alto = self.posicion_2[1] - self.posicion_1[1]

            painter.drawRect(self.posicion_1[0], self.posicion_1[1], ancho,
                             alto)

        if self.tipo_dibujo == 'línea':
            painter.drawLine(self.posicion_1[0], self.posicion_1[1],
                             self.posicion_2[0], self.posicion_2[1])

        painter.end()
示例#12
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,
                                     "PyQt by\nRiverbank Computing")
                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))
示例#13
0
    def paintEvent(self, event: QPaintEvent):
        QPushButton.paintEvent(self, event)
        if not self._delay:
            return
        # set progress parameter
        width = self.width - self.progress_width
        height = self.height - self.progress_width
        margin = self.progress_width // 2
        value = self.value * 360 // self.MAX_VALUE

        # painter
        paint = QPainter()
        paint.begin(self)
        paint.setRenderHint(QPainter.HighQualityAntialiasing)

        # draw rectangle
        rect = QRect(0, 0, self.width, self.height)
        paint.setPen(Qt.NoPen)
        paint.drawRect(rect)

        # pen
        pen = QPen()
        color = QColor(self.progress_color)
        pen.setColor(color)
        pen.setWidth(11)

        # set round cap
        if self.progress_rounded_cap:
            pen.setCapStyle(Qt.RoundCap)

        # create arc / circular progress
        paint.setPen(pen)
        paint.drawArc(margin, margin, width, height, -90 * 16, -value * 16)

        paint.end()
示例#14
0
    def paintEvent(self, event):
      side = min(self.width(), self.height())
      stime = QTime.currentTime().msec()

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

      painter.eraseRect( self.rect())
      painter.save()
      #New Pen, because we want to set multiple properties : color and width
      p = QPen(self.TimerColor)
      p.setWidth(10)
      # Use our pen
      painter.setPen( p )

      # Angle specified in 1/16th of a degree, so scale it up
      painter.drawArc(0, 0, 40, 40, 16.0 * 360 * stime / 1000, 120 * 16.0)
      painter.restore()

      #This be where object rendering happens, iter through obj collection
      self.lockShapes.acquire()
      try:
        for s in self.shapes:
          s.Render(painter, self.scale )
      finally:
        self.lockShapes.release()
示例#15
0
 def draw_smile(self, qp: QPainter):
     qp.setPen(QColor(255, 0, 0))
     k = self.slider.value()
     qp.drawEllipse(0, 0, 10 * k, 10 * k)
     qp.drawArc(2 * k, 6 * k, 6 * k, 2 * k, -30 * 16, -120 * 16)
     qp.drawEllipse(0, 0, 10 * k, 10 * k)
     qp.drawEllipse(2 * k, 2 * k, 2 * k, 2 * k)
     qp.drawEllipse(6 * k, 2 * k, 2 * k, 2 * k)
示例#16
0
 def paintEvent(self, event):
     if self.flag:
         qp = QPainter()
         qp.begin(self)
         qp.setPen(QColor(255, 175, 1))
         rudius = int(random.randrange(1000))
         qp.drawArc(0, 0, rudius, rudius, 0 * 16, 360 * 16)
         self.flag = False
示例#17
0
    def paintEvent(self, event):
        super().paintEvent(event)

        size = self.size()

        percentRange = float(self.value -
                             self.minValue) / float(self.maxValue -
                                                    self.minValue)
        endAngle = self.startAngle + round(
            percentRange * float(self.endAngle - self.startAngle), 0)

        # Now convert angles to 1/16 scale
        startAngle = int(round(self.startAngle * self.degScaler, 0))
        endAngle = int(round(endAngle * self.degScaler, 0))

        rect = QtCore.QRect(self.halfPenWidth, self.halfPenWidth,
                            size.width() - self.penWidth,
                            size.height() - self.penWidth)

        # Set up the painting canvass
        painter = QPainter()
        painter.begin(self)
        painter.setRenderHint(QPainter.Antialiasing)

        if self.showValue:
            painter.setFont(self.textfont)
            painter.setPen(QPen(QColor(self.fontColor)))

            if self.isFloat:
                printText = "%.2f" % self.value
            else:
                printText = str(int(self.value))

            painter.drawText(
                size.width() / 2 - self.metrics.width(printText) / 2,
                size.height() / 2, printText)

        painter.save()
        painter.translate(self.width(), 0)
        painter.rotate(90.0)

        # First draw complete circle
        painter.setPen(QPen(QColor(self.backgroundColor), self.penWidth))
        painter.drawArc(rect, startAngle, self.endAngle * self.degScaler)
        # First draw complete circle
        painter.setPen(QPen(QColor(self.barColor), self.penWidth))
        painter.drawArc(rect, startAngle, -endAngle)
        painter.setPen(QPen(QColor('darkgray'), 2))
        painter.drawEllipse(1, 1,
                            rect.width() + self.penWidth - 2,
                            rect.width() + self.penWidth - 2)
        painter.drawEllipse(1 + self.penWidth, 1 + self.penWidth,
                            rect.width() - self.penWidth - 2,
                            rect.width() - self.penWidth - 2)
        painter.restore()

        painter.end()
示例#18
0
    def paint(self, QPainter, QStyleOptionGraphicsItem, QWidget_widget=None):
        # setPen
        pen = QPen()
        pen.setWidth(1)
        pen.setJoinStyle(Qt.MiterJoin)  #让箭头变尖
        QPainter.setPen(pen)

        # draw line
        QPainter.drawLine(self.line)
        ptextx = (self.line.x1() + self.line.x2()) / 2
        ptexty = (self.line.y1() + self.line.y2()) / 2
        ptexty -= 5
        ptextx -= len(self.boxName) * 3
        QPainter.drawText(QPointF(ptextx, ptexty), self.boxName)

        #Painter.drawText(QPointF(ptextx, ptexty+20), self.direction)
        # setBrush
        brush = QBrush()
        brush.setColor(Qt.black)
        brush.setStyle(Qt.SolidPattern)
        QPainter.setBrush(brush)

        v = self.line.unitVector()
        v.setLength(5)
        v.translate(QPointF(self.line.dx(), self.line.dy()))

        n = v.normalVector()
        n.setLength(n.length() * 0.5)
        n2 = n.normalVector().normalVector()

        p1 = v.p2()
        p2 = n.p2()
        p3 = n2.p2()

        # 方法1
        QPainter.drawLine(self.line)
        QPainter.drawPolygon(p1, p2, p3)

        QPainter.drawArc(10, 10, 50, 50, 0, 180 * 16)

        v = self.line.unitVector()
        v.setLength(5)
        v.translate(QPointF(10, 60))

        n = v.normalVector()
        n.setLength(n.length() * 0.5)
        n2 = n.normalVector().normalVector()

        p1 = v.p2()
        p2 = n.p2()
        p3 = n2.p2()

        # 方法1
        #QPainter.drawLine(self.line)
        QPainter.drawPolygon(p1, p2, p3)
        self.scene.update()
示例#19
0
    def paint(self, QPainter, QStyleOptionGraphicsItem, QWidget_widget=None):
        # setPen
        pen = QPen()
        pen.setWidth(1)
        pen.setJoinStyle(Qt.MiterJoin)  #让箭头变尖
        QPainter.setPen(pen)

        # draw line
        QPainter.drawLine(self.line)
        ptextx = (self.line.x1() + self.line.x2()) / 2
        ptexty = (self.line.y1() + self.line.y2()) / 2
        ptexty -= 5
        ptextx -= len(self.boxName) * 3

        #QPainter.drawText(QPointF(ptextx, ptexty+20), self.direction)
        # setBrush
        brush = QBrush()
        brush.setColor(Qt.black)
        brush.setStyle(Qt.SolidPattern)
        QPainter.setBrush(brush)

        v = self.line.unitVector()
        v.setLength(5)
        v.translate(QPointF(self.line.dx(), self.line.dy()))

        n = v.normalVector()
        n.setLength(n.length() * 0.5)
        n2 = n.normalVector().normalVector()

        p1 = v.p2()
        p2 = n.p2()
        p3 = n2.p2()

        # 方法1
        QPainter.drawLine(self.line)
        QPainter.drawPolygon(p1, p2, p3)

        if self.fromLocation is not None and self.toLocation is not None:
            if self.fromLocation.boxName == self.toLocation.boxName:
                QPainter.drawArc(self.arcx1, self.arcy1, 80, 80,
                                 self.minAngle * 16, self.spanAngle * 16)
                ptextx = self.arcTextx
                ptexty = self.arcTexty
                #QPainter.drawArc(self.arcx1, self.arcy1+100, 50, 50, 270*16, 89*16)

                #QPainter.drawArc(self.arcx1, self.arcy1+200, 50, 50, 0*16, 89*16)

                #QPainter.drawArc(self.arcx1, self.arcy1+300, 50, 50, 270*16, 180*16)

                #QPainter.drawArc(self.arcx1, self.arcy1+400, 50, 50, 270*16, 270*16)
                #QPainter.drawArc(self.arcx1, self.arcy1+500, 50, 50, 180*16, 89*16)

        QPainter.drawText(QPointF(ptextx, ptexty), self.boxName)

        #QPainter.drawRect(self.arcx1, self.arcy1, 50, 50)
        self.scene.update()
示例#20
0
    def draw_arc(painter: QtGui.QPainter, x: int, y: int) -> None:
        angle: int = 90 * 16
        if y > 0:
            angle = 270 * 16

        width: float = -2 * x
        height: float = -2 * y

        span_angle: int = 90 * 16
        painter.drawArc(x, y, width, height, angle, span_angle)
示例#21
0
 def paintEvent(self, event):
     width = self.pos2[0] - self.pos1[0]
     height = self.pos2[1] - self.pos1[1]
     qp = QPainter()
     qp.begin(self)
     rect = QtCore.QRect(self.pos1[0], self.pos1[1], width, height)
     startAngle = 0
     arcLength = 360 * 16
     qp.drawArc(rect, startAngle, arcLength)
     qp.end()
示例#22
0
class GameWidget(QWidget):
	def __init__(self):
		super().__init__()
		self.cur_width = int(DESK_WIDTH / 2)
		self.cur_height = int(2 * DESK_HEIGHT / 3)
		self.init_ui()
		self.paint_handle = []

		self.timer = Timer(TICK_INTERVAL, self.do_repaint)
		self.timer.start()

	def init_ui(self):
		self.setGeometry(0, 0, self.cur_width, self.cur_height)
		self.setWindowTitle("VeryCoolBall")
		self.show()

	def paintEvent(self, e):
		self.qp = QPainter()
		self.qp.begin(self)
		for func in self.paint_handle:
			func()
		self.qp.end()

	def do_repaint(self):
		self.update()
		self.timer = Timer(TICK_INTERVAL, self.do_repaint)
		self.timer.start()

	def append_paint_handle(self, func):
		self.paint_handle.append(func)

	def draw_point(self, pos, color=Qt.black):
		self.qp.setPen(color)
		self.qp.drawPoint(pos[0], pos[1])
		return True
	
	def draw_line(self, start_pos, end_pos, color=Qt.black):
		self.qp.setPen(color)
		self.qp.drawLine(start_pos[0], start_pos[1], end_pos[0], end_pos[1])
		return True

	def draw_box(self, left_up_pos, right_down_pos, color=Qt.black):
		self.qp.setPen(color)
		right_up_pos = right_down_pos[0], left_up_pos[1]
		left_down_pos = left_up_pos[0], right_down_pos[1]
		self.draw_line(left_up_pos, right_up_pos)
		self.draw_line(right_up_pos, right_down_pos)
		self.draw_line(right_down_pos, left_down_pos)
		self.draw_line(left_down_pos, left_up_pos)
		return True

	def draw_sphere(self, pos, radius, color=Qt.black):
		self.qp.setPen(color)
		# QT绘制单位就是1/16度,你必须单位换算
		self.qp.drawArc(pos[0], pos[-1], radius, radius, 0, 360 * 16)
示例#23
0
 def paintEvent(self, event):
     width = self.pos2[0] - self.pos1[0]
     height = self.pos2[1] - self.pos1[1]
     rect = QRect(self.pos1[0],self.pos1[1],width,height)
     qp = QPainter()
     qp.begin(self)
     pen = QPen(Qt.red,3)
     pen.setStyle(Qt.DotLine)
     qp.setPen(pen)
     qp.drawArc(rect,0,360*16)
     qp.end()
示例#24
0
    def paintEvent(self, event):
        ancho = self.posicion_2[0] - self.posicion_1[0]
        alto = self.posicion_2[1] - self.posicion_1[1]

        painter = QPainter()
        painter.begin(self)

        rectangulo = QRect(self.posicion_1[0], self.posicion_1[1], ancho, alto)

        painter.drawArc(rectangulo, 0, 360 * 16)

        painter.end()
示例#25
0
    def draw_arc(self, painter: QtGui.QPainter) -> None:
        angle = 90 * 16
        if self.points["TY1"].y() > 0:
            angle = 270 * 16

        x = self.points["TY3"].x()
        y = self.points["TY1"].y()

        width = -2 * x
        height = -2 * y

        span_angle = 90 * 16
        painter.drawArc(x, y, width, height, angle, span_angle)
示例#26
0
    def paintEvent(self, a0: QtGui.QPaintEvent) -> None:
        painter = QPainter()

        painter.begin(self)

        painter.setPen(Qt.blue)
        painter.drawArc(QRect(0, 10, 100, 100), 0, 90 * 16)

        image = QImage('./image/book.jpg')
        rect = QRect(10, 140, image.width() / 2, image.height() / 2)
        painter.drawImage(rect, image)

        painter.end()
示例#27
0
文件: 12.PY 项目: anshunliang/test_go
    def paintEvent(self,event):  #paintEvent 当窗口变化是直接调用,不需要调用函数
        painter=QPainter()
 
        painter.begin(self)
        #设置画笔和字体
        painter.setPen(QColor(2,1,3))
        painter.setFont(QFont('SimSun',12))
 
        '''绘制圆弧'''
        #(1)确定绘制区域
        rect=QRect(0,0,100,100) #前两个值为左上角的坐标,后两个值为宽度和高度
        #(2)在区域绘制图形
        painter.drawArc(rect,0,50*16)  #后面两个参数为为起始的角度,和结束的角度,为什么乘16,因为单位为alen,一度=16alen,也就是50度为50*16
 
        '''绘制圆'''
        rect=QRect(100,0,50,50)
        painter.setPen(Qt.red)
        painter.drawArc(rect,0,360*16)
 
        '''绘制带弦的弧'''
        rect = QRect(200, 0, 50, 50)
        painter.drawChord(rect,1,90*16)
 
        '''绘制扇形'''
        rect = QRect(0,50, 50, 50)
        painter.drawPie(rect,12,76*16)
 
        '''绘制椭圆'''
        painter.drawEllipse(0,100,60,50)   #前两个参数为起始坐标,后两个为宽和高,当后两个参数一样为圆
 
        '''绘制多边形'''
        #绘制一个正方形
        p1=QPoint(100,100)
        p2=QPoint(130,100)
        p3=QPoint(130,130)
        p4=QPoint(100,130)
        polygon=QPolygon([p1,p2,p3,p4])
        painter.drawPolygon(polygon)
 
        '''绘制一个图形'''
        #(1)读取图像
        img=QImage('python.png')
        #(2)进行绘制,对图片的大小压说为原来的二分之一
        rect=QRect(100,100,img.width()/3,img.height()/3)
        painter.drawImage(rect,img)
 
 
 
        painter.end()
示例#28
0
    def paintEvent(self, QPaintEvent):
        p = QPainter(self)
        p.setPen(self.pen)
        p.setBrush(self.brush)

        rect = QRect(50, 100, 300, 200)
        points = [
            QPoint(150, 100),
            QPoint(300, 150),
            QPoint(350, 250),
            QPoint(100, 300)
        ]
        startAngle = 30 * 16
        spanAngle = 120 * 16

        path = QPainterPath()
        path.addRect(150, 150, 100, 100)
        path.moveTo(100, 100)
        path.cubicTo(300, 100, 200, 200, 300, 300)
        path.cubicTo(100, 300, 200, 200, 100, 100)

        if self.shape == "Line":
            p.drawLine(rect.topLeft(), rect.bottomRight())
        elif self.shape == "Rectangle":
            p.drawRect(rect)
        elif self.shape == 'Rounded Rectangle':
            p.drawRoundedRect(rect, 25, 25, Qt.RelativeSize)
        elif self.shape == "Ellipse":
            p.drawEllipse(rect)
        elif self.shape == "Polygon":
            p.drawPolygon(QPolygon(points), Qt.WindingFill)
        elif self.shape == "Polyline":
            p.drawPolyline(QPolygon(points))
        elif self.shape == "Points":
            p.drawPoints(QPolygon(points))
        elif self.shape == "Pie":
            p.drawPie(rect, startAngle, spanAngle)
        elif self.shape == "Arc":
            p.drawArc(rect, startAngle, spanAngle)
        elif self.shape == "Chord":
            p.drawChord(rect, startAngle, spanAngle)
        elif self.shape == "Path":
            p.drawPath(path)
        elif self.shape == "Text":
            p.drawText(rect, Qt.AlignCenter, "Hello Qt!")
        elif self.shape == "Pixmap":
            p.drawPixmap(150, 150, QPixmap("images/qt-logo.png"))
示例#29
0
 def paintEvent(self, event):
     qp = QPainter()
     qp.begin(self)
     if self.toDraw == "rectangle":
         width = self.pos2[0] - self.pos1[0]
         height = self.pos2[1] - self.pos1[1]
         qp.drawRect(self.pos1[0], self.pos1[1], width, height)
     if self.toDraw == "circle":
         width = self.pos2[0] - self.pos1[0]
         height = self.pos2[1] - self.pos1[1]
         rect = QtCore.QRect(self.pos1[0], self.pos1[1], width, height)
         startAngle = 0
         arcLength = 360 * 16
         qp.drawArc(rect, startAngle, arcLength)
         qp.end()
     if self.toDraw == "line":
         qp.drawLine(self.pos1[0], self.pos1[1], self.pos2[0], self.pos2[1])
 def paintEvent(self, event):
     painter = QPainter(self)
     painter.setRenderHint(QPainter.Antialiasing)
     pen = QPen()
     pen.setWidth(9)
     pen.setColor(QColor("#191a2f"))
     painter.setPen(pen)
     painter.drawArc(5.1, 5.1,
                     self.width() - 10,
                     self.height() - 10, 1450, -5650)
     pen = QPen()
     pen.setWidth(10)
     pen.setColor(QColor("#00ffc1"))
     painter.setPen(pen)
     painter.drawArc(5.1, 5.1,
                     self.width() - 10,
                     self.height() - 10, 1450, self.values)
     self.update()
示例#31
0
    def paintEvent(self, event):
        pp = QPainter(self.pix)
        # pp.setPen(Qt.red)
        pp.setPen(QPen(Qt.red, 20))

        pp.drawArc(0, 0, 100, 100, 0, 45 * 16)
        # 根据鼠标指针前后两个位置绘制直线
        pp.drawPoints(self.lastPoint, self.endPoint)
        # pp.drawArc(0, 0, self.lastPoint, self.endPoint, 0, 360 * 16)

        # pp.drawLine(self.lastPoint, self.endPoint)
        # 让前一个坐标值等于后一个坐标值,
        # 这样就能实现画出连续的线
        self.lastPoint = self.endPoint
        painter = QPainter(self)
        painter.drawPixmap(0, 0, self.pix)

        self.label_29.setPixmap(self.pix)
示例#32
0
    def draw(
        startPoint: QPoint,
        endPoint: QPoint,
        painter: QPainter,
        settings: LineSettings = LineSettings()
    ) -> QPainterPath:
        # hardcoded sine wave
        half_width = (startPoint.x() - endPoint.x()) / 2.
        half_height = (startPoint.y() - endPoint.y()) / 2.
        half_point_x = endPoint.x() - half_width
        half_point_y = endPoint.y() - half_height

        painter.drawArc(
            QRect(startPoint.x(), startPoint.y(), half_width, half_height),
            -half_height, half_width)
        painter.drawArc(
            QRect(half_point_x, half_point_y, half_width, half_height),
            half_height, half_width)
示例#33
0
    def paintEvent(self, event):
        painter = QPainter(self)
        event.accept()

        painter.save()
        painter.setRenderHint(QPainter.Antialiasing, True)

        if self.fLabel:
            if self.fCustomPaintMode == self.CUSTOM_PAINT_MODE_NULL:
                painter.setPen(self.fLabelGradientColor2)
                painter.setBrush(self.fLabelGradient)
                painter.drawRect(self.fLabelGradientRect)

            painter.setFont(self.fLabelFont)
            painter.setPen(self.fLabelGradientColorT[0 if self.isEnabled() else 1])
            painter.drawText(self.fLabelPos, self.fLabel)

        if self.isEnabled():
            normValue = float(self.fRealValue - self.fMinimum) / float(self.fMaximum - self.fMinimum)
            target    = QRectF(0.0, 0.0, self.fPixmapBaseSize, self.fPixmapBaseSize)

            curLayer = int((self.fPixmapLayersCount - 1) * normValue)

            if self.fPixmapOrientation == self.HORIZONTAL:
                xpos = self.fPixmapBaseSize * curLayer
                ypos = 0.0
            else:
                xpos = 0.0
                ypos = self.fPixmapBaseSize * curLayer

            source = QRectF(xpos, ypos, self.fPixmapBaseSize, self.fPixmapBaseSize)
            painter.drawPixmap(target, self.fPixmap, source)

            # Custom knobs (Dry/Wet and Volume)
            if self.fCustomPaintMode in (self.CUSTOM_PAINT_MODE_CARLA_WET, self.CUSTOM_PAINT_MODE_CARLA_VOL):
                # knob color
                colorGreen = QColor(0x5D, 0xE7, 0x3D).lighter(100 + self.fHoverStep*6)
                colorBlue  = QColor(0x3E, 0xB8, 0xBE).lighter(100 + self.fHoverStep*6)

                # draw small circle
                ballRect = QRectF(8.0, 8.0, 15.0, 15.0)
                ballPath = QPainterPath()
                ballPath.addEllipse(ballRect)
                #painter.drawRect(ballRect)
                tmpValue  = (0.375 + 0.75*normValue)
                ballValue = tmpValue - floor(tmpValue)
                ballPoint = ballPath.pointAtPercent(ballValue)

                # draw arc
                startAngle = 216*16
                spanAngle  = -252*16*normValue

                if self.fCustomPaintMode == self.CUSTOM_PAINT_MODE_CARLA_WET:
                    painter.setBrush(colorBlue)
                    painter.setPen(QPen(colorBlue, 0))
                    painter.drawEllipse(QRectF(ballPoint.x(), ballPoint.y(), 2.2, 2.2))

                    gradient = QConicalGradient(15.5, 15.5, -45)
                    gradient.setColorAt(0.0,   colorBlue)
                    gradient.setColorAt(0.125, colorBlue)
                    gradient.setColorAt(0.625, colorGreen)
                    gradient.setColorAt(0.75,  colorGreen)
                    gradient.setColorAt(0.76,  colorGreen)
                    gradient.setColorAt(1.0,   colorGreen)
                    painter.setBrush(gradient)
                    painter.setPen(QPen(gradient, 3))

                else:
                    painter.setBrush(colorBlue)
                    painter.setPen(QPen(colorBlue, 0))
                    painter.drawEllipse(QRectF(ballPoint.x(), ballPoint.y(), 2.2, 2.2))

                    painter.setBrush(colorBlue)
                    painter.setPen(QPen(colorBlue, 3))

                painter.drawArc(4.0, 4.0, 26.0, 26.0, startAngle, spanAngle)

            # Custom knobs (L and R)
            elif self.fCustomPaintMode in (self.CUSTOM_PAINT_MODE_CARLA_L, self.CUSTOM_PAINT_MODE_CARLA_R):
                # knob color
                color = QColor(0xAD, 0xD5, 0x48).lighter(100 + self.fHoverStep*6)

                # draw small circle
                ballRect = QRectF(7.0, 8.0, 11.0, 12.0)
                ballPath = QPainterPath()
                ballPath.addEllipse(ballRect)
                #painter.drawRect(ballRect)
                tmpValue  = (0.375 + 0.75*normValue)
                ballValue = tmpValue - floor(tmpValue)
                ballPoint = ballPath.pointAtPercent(ballValue)

                painter.setBrush(color)
                painter.setPen(QPen(color, 0))
                painter.drawEllipse(QRectF(ballPoint.x(), ballPoint.y(), 2.0, 2.0))

                # draw arc
                if self.fCustomPaintMode == self.CUSTOM_PAINT_MODE_CARLA_L:
                    startAngle = 216*16
                    spanAngle  = -252.0*16*normValue
                else:
                    startAngle = 324.0*16
                    spanAngle  = 252.0*16*(1.0-normValue)

                painter.setPen(QPen(color, 2))
                painter.drawArc(3.5, 4.5, 22.0, 22.0, startAngle, spanAngle)

            # Custom knobs (Color)
            elif self.fCustomPaintMode == self.CUSTOM_PAINT_MODE_COLOR:
                # knob color
                color = self.fCustomPaintColor.lighter(100 + self.fHoverStep*6)

                # draw small circle
                ballRect = QRectF(8.0, 8.0, 15.0, 15.0)
                ballPath = QPainterPath()
                ballPath.addEllipse(ballRect)
                tmpValue  = (0.375 + 0.75*normValue)
                ballValue = tmpValue - floor(tmpValue)
                ballPoint = ballPath.pointAtPercent(ballValue)

                # draw arc
                startAngle = 216*16
                spanAngle  = -252*16*normValue

                painter.setBrush(color)
                painter.setPen(QPen(color, 0))
                painter.drawEllipse(QRectF(ballPoint.x(), ballPoint.y(), 2.2, 2.2))

                painter.setBrush(color)
                painter.setPen(QPen(color, 3))
                painter.drawArc(4.0, 4.0, 26.0, 26.0, startAngle, spanAngle)

            # Custom knobs (Zita)
            elif self.fCustomPaintMode == self.CUSTOM_PAINT_MODE_ZITA:
                a = normValue * pi * 1.5 - 2.35
                r = 10.0
                x = 10.5
                y = 10.5
                x += r * sin(a)
                y -= r * cos(a)
                painter.setBrush(Qt.black)
                painter.setPen(QPen(Qt.black, 2))
                painter.drawLine(QPointF(11.0, 11.0), QPointF(x, y))

            # Custom knobs
            else:
                painter.restore()
                return

            if self.HOVER_MIN < self.fHoverStep < self.HOVER_MAX:
                self.fHoverStep += 1 if self.fIsHovered else -1
                QTimer.singleShot(20, self.update)

        else: # isEnabled()
            target = QRectF(0.0, 0.0, self.fPixmapBaseSize, self.fPixmapBaseSize)
            painter.drawPixmap(target, self.fPixmap, target)

        painter.restore()
示例#34
0
 def paint(self, painter: QPainter,
           styleOptionGraphicsItem: QStyleOptionGraphicsItem,
           widget: QWidget=None):
     painter.setPen(self._pen)
     painter.setBrush(QBrush())
     painter.drawArc(self.rect(), self.startAngle(), self.spanAngle())
示例#35
0
    def paintEvent(self, _event):
        painter = QPainter(self)
        painter.setRenderHint(QPainter.Antialiasing)
        width = self.width()
        height = self.height()

        if self.dynamic_resize:
            knob_radius = self.dynamic_knob_radius
        else:
            knob_radius = self.knob_radius

        # ensure that the center point is in the middle of a pixel to ensure
        # that exact vertial and horizantal ticks are drawn exactly 1px wide
        x = math.floor(width / 2.0) + 0.5
        y = math.floor(height / 2.0) + 0.5

        if DEBUG:
            painter.fillRect(0, 0, width, height, Qt.yellow)

        painter.translate(x, y)

        if self.knob_style == KnobWidget.STYLE_NEEDLE:
            r = min(x, y) - 1

            painter.setPen(Qt.white)
            painter.setBrush(Qt.white)
            painter.drawEllipse(QPoint(0, 0), r, r)

        angle = self.value_factor * self.total_angle - (self.total_angle / 2.0)

        # draw base knob or needle spike
        if self.knob_style == KnobWidget.STYLE_ROUND:
            painter.setPen(self.border_color)

            if self.pressed:
                gradient = QRadialGradient(0, 0, knob_radius)
                gradient.setColorAt(0, self.base_color_pressed)
                gradient.setColorAt(0.85, self.base_color)
                gradient.setColorAt(1, self.base_color)

                painter.setBrush(gradient)
            else:
                painter.setBrush(self.base_color)

            painter.drawEllipse(QPoint(0, 0), knob_radius, knob_radius)
        elif self.knob_style == KnobWidget.STYLE_NEEDLE:
            painter.save()
            painter.rotate(angle)
            painter.setPen(self.needle_color)
            painter.setBrush(self.needle_color)

            needle = QPolygonF()
            needle.append(QPointF(self.needle_base_radius * 0.6, 0))
            needle.append(QPointF(0, -knob_radius))
            needle.append(QPointF(-self.needle_base_radius * 0.6, 0))

            painter.drawPolygon(needle)
            painter.restore()

        # draw knob mark or needle base
        if self.knob_style == KnobWidget.STYLE_ROUND:
            painter.save()
            painter.rotate(angle)
            painter.setPen(QPen(self.mark_color, 2))
            painter.drawLine(0, -knob_radius * 0.4, 0, -knob_radius * 0.8)
            painter.restore()
        elif self.knob_style == KnobWidget.STYLE_NEEDLE:
            painter.setPen(self.border_color)
            painter.setBrush(self.base_color)
            painter.drawEllipse(QPoint(0, 0), self.needle_base_radius, self.needle_base_radius)

        if self.scale_visible:
            painter.setPen(Qt.black)

            # draw scale arc
            if self.scale_arc_visible:
                painter.drawArc(-knob_radius - self.knob_to_scale,
                                -knob_radius - self.knob_to_scale,
                                knob_radius * 2 + self.knob_to_scale * 2,
                                knob_radius * 2 + self.knob_to_scale * 2,
                                (90 + self.total_angle / 2) * 16, -self.total_angle * 16)

            # draw scale ticks
            def value_to_angle(value):
                return (float(value - self.minimum_value) / self.value_range) * self.total_angle - (self.total_angle / 2.0)

            value = self.minimum_value

            while value <= self.maximum_value:
                angle = value_to_angle(value)

                painter.save()
                painter.rotate(value_to_angle(value))
                painter.drawLine(0, -knob_radius - self.knob_to_scale,
                                 0, -knob_radius - self.knob_to_scale - self.tick_size_large)

                if self.scale_text_visible:
                    p = painter.worldTransform().map(QPoint(0, -knob_radius - \
                                                               self.knob_to_scale - \
                                                               self.tick_size_large - \
                                                               self.tick_to_text - \
                                                               self.text_radius))

                painter.restore()

                if self.scale_text_visible:
                    if DEBUG:
                        painter.save()
                        painter.setPen(QColor(255, 0, 0, 50))
                        painter.setBrush(QColor(255, 0, 0, 50))
                        painter.drawEllipse(QPoint(p.x() - x, p.y() - y),
                                            self.text_radius, self.text_radius)
                        painter.restore()

                    painter.drawText(p.x() - x - 30, p.y() - y - 30, 60, 60,
                                     Qt.TextDontClip | Qt.AlignHCenter | Qt.AlignVCenter,
                                     str(value))

                for i in range(1, self.scale_step_divisions):
                    sub_value = value + (float(self.scale_step_size) * i) / self.scale_step_divisions

                    if sub_value > self.maximum_value:
                        break

                    painter.save()
                    painter.rotate(value_to_angle(sub_value))
                    painter.drawLine(0, -knob_radius - self.knob_to_scale,
                                     0, -knob_radius - self.knob_to_scale - self.tick_size_small)
                    painter.restore()

                value += self.scale_step_size

        if self.title_text != None:
            painter.drawText(-knob_radius, knob_radius - 30,
                             knob_radius * 2, 60,
                             Qt.TextDontClip | Qt.AlignHCenter | Qt.AlignVCenter,
                             self.title_text)