示例#1
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()
示例#2
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()
示例#3
0
    def paintEvent(self, paintEvent):
        # return

        painter = QPainter(self)
        painter.setPen(QPen(Qt.NoPen))

        # painter.setBrush(QBrush(Qt.lightGray))
        # painter.drawRect(0,0,self.width(), self.height())

        if self.state == self.STATE_PASSIVE:
            painter.setBrush(QBrush(QColor(0, 200, 255, 30)))
        elif self.state == self.STATE_ACTIVE:
            painter.setBrush(QBrush(QColor(0, 200, 255, 100)))
        elif self.state == self.STATE_CURRENT:
            painter.setBrush(QBrush(QColor(0, 200, 255, 255)))

        top = self.height() / 2 - self.visualSize / 2
        left = self.x - self.visualSize / 2

        painter.drawPie(left, top, self.visualSize, self.visualSize, 0,
                        5760 * (16 * 360))

        painter.setPen(QPen(QColor(0, 0, 0)))
        painter.drawText(QRectF(left, top, self.visualSize, self.visualSize),
                         Qt.AlignCenter, self.primaryText)
        painter.drawText(
            QRectF(left - self.visualSize, top + self.visualSize,
                   self.visualSize * 3, self.visualSize / 2), Qt.AlignCenter,
            self.secondaryText)
示例#4
0
    def paintEvent(self, evt):
        painter = QPainter(self)
        painter.setRenderHint(QPainter.Antialiasing, True)

        # 画边框
        painter.setPen(Qt.white)
        painter.drawRect(self.rect())

        realSize = min(self.width(), self.height()) - 10
        painter.translate(self.width() / 2.0, self.height() / 2.0)
        painter.scale(realSize / 1000.0, realSize / 1000.0)
        painter.rotate(self.rotateAngle)

        # 画外圈
        painter.setPen(Qt.NoPen)
        painter.setBrush(QColor(80, 80, 80))
        painter.drawEllipse(QPointF(0, 0), 500, 500)

        # 园内部四个扇形区域,蓝白交叉
        startAngle = 0
        spanAngle = 90 * 16
        pieRect = QRectF(QPointF(-400, -400), QPointF(400, 400))
        for i in range(4):
            color = QColor(0, 120, 200) if i % 2 else QColor(240, 240, 240)
            painter.setBrush(color)
            painter.drawPie(pieRect, startAngle, spanAngle)
            startAngle += spanAngle
示例#5
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))
示例#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,
                                     "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))
示例#7
0
    def draw(self, painter: QPainter):
        delta_x = (int)(cos(self.angle) * BOT_POINTER_LENGTH)
        delta_y = (int)(sin(self.angle) * BOT_POINTER_LENGTH)

        if self.id == 0:
            color = QColor(0xFF, 0x00, 0x00, 0xFF)
        else:
            color = QColor(0x00, 0x00, 0xFF, 0xFF)

        pen = QPen(color)
        brush = QBrush(Qt.SolidPattern)
        brush.setColor(color)

        painter.setPen(pen)
        painter.setBrush(brush)

        painter.drawPie(
            SCALE(self.x - BOT_RADIUS),
            SCALE(self.y - BOT_RADIUS),
            SCALE(2 * BOT_RADIUS),
            SCALE(2 * BOT_RADIUS),
            0,
            360 * 64,
        )
        pen.setWidth(1)

        painter.drawLine(
            SCALE(self.x),
            SCALE(self.y),
            SCALE(self.x + delta_x),
            SCALE(self.y + delta_y),
        )
示例#8
0
 def paintEvent(self, event):
     bgcolor = self.palette().color(QPalette.Background)
     pen = QPen(bgcolor, 7, Qt.SolidLine)
     qp = QPainter()
     qp.begin(self)
     qp.setPen(pen)
     qp.setRenderHint(QPainter.Antialiasing)
     qp.setBrush(Qt.gray)
     for i in range(self.n):
         alpha = int(16* 360 * i/self.n)
         alpha2 = int(16* 360 * 1/self.n)
         qp.setBrush(Qt.green if i<self.m else Qt.gray)
         qp.drawPie(self.R, alpha, alpha2)
     qp.end()
示例#9
0
 def paintEvent(self, event):
     bgcolor = self.palette().color(QPalette.Background)
     pen = QPen(bgcolor, 7, Qt.SolidLine)
     qp = QPainter()
     qp.begin(self)
     qp.setPen(pen)
     qp.setRenderHint(QPainter.Antialiasing)
     qp.setBrush(Qt.gray)
     for i in range(self.n):
         alpha = int(16 * 360 * i / self.n)
         alpha2 = int(16 * 360 * 1 / self.n)
         qp.setBrush(Qt.green if i < self.m else Qt.gray)
         qp.drawPie(self.R, alpha, alpha2)
     qp.end()
示例#10
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()
示例#11
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"))
示例#12
0
    def paintEvent(self, QPaintEvent):
        painter = QPainter()

        painter.begin(self)

        # 绘制弧
        painter.setPen(Qt.red)
        rect = QRect(0, 0, 100, 100)                # 初始化一块矩形区域,前面两个是矩形所在的左上角坐标点,后面两个是矩形的长和宽
        # 绘图使用的单位是alen:1个alen等于1/16度
        painter.drawArc(rect, 0, 66 * 16)           # rect是弧形所在的区域,0是弧形的起始角度,60*16是弧形的终止角度

        # 使用绘制弧形函数来绘制圆
        painter.setPen(Qt.blue)
        painter.drawArc(200,0, 100,100, 0, 360 * 16)  # rect是弧形所在的区域,0是弧形的起始角度,60*16是弧形的终止角度

        # 绘制带弦的弧
        painter.setPen(Qt.yellow)
        painter.drawChord(300, 0, 100, 100, 0, 145 * 16)

        # 绘制扇形
        painter.setPen(Qt.cyan)
        painter.drawPie(0, 100, 100, 100, 0, 200 * 16)

        # 绘制椭圆
        painter.setPen(Qt.red)
        painter.drawEllipse(100, 100, 100, 150)

        # 绘制多边形:几变形就要指定几个点
        p1 = QPoint(10, 200)        #点的坐标
        p2 = QPoint(30, 200)        #点的坐标
        p3 = QPoint(200, 300)        #点的坐标
        p4 = QPoint(300, 300)       #点的坐标
        p5 = QPoint(100, 400)        #点的坐标

        po = QPolygon([p1, p2, p3, p4, p5])
        painter.drawPolygon(po)

        # 绘制图像
        image = QImage("./24.jpg")        # 加载图像
        rect1 = QRect(300, 300, image.width()/3, image.height()/3)
        painter.drawImage(rect1, image)


        painter.end()
示例#13
0
 def paintEvent(self, event):
     bgcolor = self.palette().color(QPalette.Background)
     pen = QPen(Qt.gray, 1, Qt.SolidLine)
     qp = QPainter()
     qp.begin(self)
     qp.setPen(pen)
     qp.setRenderHint(QPainter.Antialiasing)
     qp.setBrush(Qt.gray)
     total = sum([x[2] for x in self._list])
     if total == 0:
         return
     alpha = 0
     s = 0
     for name, color, amount in self._list:
         delta = int(16 * 360 * amount / total)
         qp.setBrush(color)
         qp.drawPie(self.R, alpha, delta)
         alpha += delta
     qp.end()
示例#14
0
    def drawDiagram(self, qp: QPainter):
        """Предназначена для рисования на frame"""
        start = self.dteStart.dateTime().toPyDateTime()
        end = self.dteEnd.dateTime().toPyDateTime()
        all_time, flag_time = self.getStatistic(start, end)

        center = self.frame.width() // 2, self.frame.height() // 2
        r = min(self.frame.width() // 2, self.frame.height() // 2) - 1
        rect = QRect(center[0] - r, center[1] - r, 2 * r, 2 * r)
        if all_time == 0:
            qp.drawEllipse(rect)
        else:
            now_angle = 0
            for flag_id, time in flag_time.items():
                color = self.getColor(flag_id)
                d_angel = int(16 * 360 * time / all_time)
                qp.setBrush(color)
                qp.drawPie(rect, now_angle, d_angel)
                now_angle += d_angel
示例#15
0
    def paintEvent(self, e):
        if self.v == 100:
            return

        p = QPainter(self)
        brush = QBrush(QColor(self.c[0], self.c[1], self.c[1], 127))
        p.setBrush(brush)
        pen = QPen()
        pen.setStyle(Qt.NoPen)
        p.setPen(pen)

        start = 16 * 90 - 16 * 360 * (self.v / 100)
        span = -16 * 360 * (1 - (self.v / 100))
        # start = 90*16 - 120*16
        # span = -(360-120)*16
        size = p.device().width()
        rect = QRectF(0, 0, size, size)
        # print(str(self.v)+str(self.val[1])+str(span))

        p.drawPie(rect, start, span)
示例#16
0
 def paintEvent(self, event):
     painter = QPainter(self)
     super().paintEvent(event)
     painter.setRenderHint(QPainter.Antialiasing)
     brush = None
     if not self.parent().isEnabled():
         brush = QBrush(QColor(Qt.lightGray))
     elif self.active:
         brush = QBrush(QColor(Qt.red))
     elif self.marked:
         brush = QBrush(QColor(Qt.green))
     else:
         brush = QBrush(QColor(Qt.white))
     pen = QPen(Qt.black)
     pen.setWidth(5)
     painter.setBrush(brush)
     painter.setPen(pen)
     painter.drawPie(self.offset, self.offset,
                     self.width() - self.offset * 2,
                     self.height() - self.offset * 2, self.start, 45 * 16)
     painter.end()
示例#17
0
文件: test.py 项目: bopopescu/py-try
class testWidget(QWidget):
    def __init__(self):
        self.needDraw = True
        super().__init__()
        self.setMinimumSize(self.width(), self.height())

    def paintEvent(self, e):
        self.qp.begin(self)
        self.drawWidget()
        self.qp.end()

    def testDraw(self, num: int = 0):
        self.qp = QPainter()

        font = QFont('Serif', 7, QFont.Light)
        self.qp.setFont(font)

        pen = QPen(QColor(20, 20, 20), 1, Qt.SolidLine)

        self.qp.setPen(pen)
        self.qp.setBrush(Qt.NoBrush)

        self.qp.begin(self)
        self.qp.drawPie(0, 0, 100, 100, 1, num)
        self.qp.end()

    def drawWidget(self):
        # pen2 = QPen(QColor(250, 20, 20), 1,
        #             Qt.SolidLine)
        #
        # pen3 = QPen(QColor(20, 20, 250), 2,
        #             Qt.SolidLine)
        #
        # pen4 = QPen(QColor(20, 20, 250), 1,
        #             Qt.SolidLine)

        w = self.width()
        h = self.height()

        rect = QRectF(0.0, 0.0, 120.0, 50.0)
示例#18
0
    def draw(self, painter: QPainter):
        painter.setRenderHint(QPainter.Antialiasing)

        if self.color == 0:
            color = QColor(0xFF, 0x07, 0x3A, 0xFF)
        elif self.color == 1:
            color = QColor(0x4D, 0x4D, 0xFF, 0xFF)
        else:
            color = QColor(0xDD, 0xD9, 0x2A, 0xFF)

        pen = QPen(color)
        brush = QBrush(Qt.SolidPattern)
        brush.setColor(color)

        painter.setPen(pen)
        painter.setBrush(brush)

        tl = QPointF(SCALE(self.x - 1), SCALE(self.y - 1))
        br = QPointF(SCALE(self.x + 1), SCALE(self.y + 1))

        body = QRectF(tl, br)
        painter.drawPie(body, 0, 360 * 64)
示例#19
0
    def paintEvent(self, event):
        self.main_width = self.width()
        self.main_height = self.height()

        painter = QPainter()
        painter.begin(self)
        painter.setPen(QPen(Qt.black, 1))
        painter.setBrush(QBrush(self.colorIcon, Qt.SolidPattern))
        # Painting start
        if self.doPaint:
            if self.doBar:
                max_val = self.mHisto.max()
                segment = int(self.main_width / len(self.mHisto.m_list))
                rescale = self.main_height / max_val
                x = 0
                for rect in self.mHisto.m_list:
                    height = rect.m_amount * rescale
                    y = self.main_height - height
                    painter.drawRect(int(x), int(y), int(segment), int(height))
                    x += segment
            elif self.doPie:
                angle_scale = 360 / self.mHisto.total()
                start_angle = 0
                segment = QRect(0, 0, 400, 400)
                for rect in self.mHisto.m_list:
                    painter.setBrush(
                        QColor(qrand() % 256,
                               qrand() % 256,
                               qrand() % 256))
                    centre = QPoint(int(self.width() / 2),
                                    int(self.width() / 2))
                    segment.moveCenter(centre)
                    span_angle = (rect.m_amount * angle_scale) * 16
                    painter.drawPie(segment, int(start_angle), int(span_angle))
                    start_angle += span_angle

        # Painting end
        painter.end()
示例#20
0
    def paintEvent(self, event):
        painter = QPainter()
        painter.begin(self)

        painter.setPen(Qt.blue)

        #绘制弧
        rect = QRect(0, 10, 100, 100)
        # alen: 1个alen等于1/16度   45 * 16
        painter.drawArc(rect, 0, 90 * 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(290, 512)
        point4 = QPoint(290, 588)
        point5 = QPoint(200, 533)
        polygon = QPolygon([point1, point2, point3, point4, point5])
        painter.drawPolygon(polygon)

        # 绘制图像
        image = QImage('src\images\QQ截图20200219191139.jpg')
        rect = QRect(10, 400, image.width() / 3, image.height() / 3)
        painter.drawImage(rect, image)

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

        painter.setRenderHint(QPainter.Antialiasing)
        painter.setPen(Qt.NoPen)
        painter.setBrush(QBrush(QColor("#888888")))

        path1 = QPainterPath()
        path1.moveTo(5, 5)
        path1.cubicTo(40, 5, 50, 50, 99, 99)
        path1.cubicTo(5, 99, 50, 50, 5, 5)
        painter.drawPath(path1)

        painter.drawPie(130, 20, 90, 60, 30 * 16, 120 * 16)
        painter.drawChord(240, 30, 90, 60, 0, 16 * 180)
        painter.drawRoundedRect(20, 120, 80, 50, 10, 10)

        polygon = QPolygon()
        polygon.append(QPoint(130, 140))
        polygon.append(QPoint(180, 170))
        polygon.append(QPoint(180, 140))
        polygon.append(QPoint(220, 110))
        polygon.append(QPoint(140, 100))

        painter.drawPolygon(polygon)
        painter.drawRect(250, 110, 60, 60)

        baseline = QPointF(20, 250)
        font = QFont("Georgia", 55)

        path2 = QPainterPath()
        path2.addText(baseline, font, "Q")
        painter.drawPath(path2)

        painter.drawEllipse(140, 200, 60, 60)
        painter.drawEllipse(240, 200, 90, 60)
示例#22
0
    def paintEvent(self, event):
        painter = QPainter(self)
        painter.begin(self)
        painter.setPen(Qt.blue)
        painter.setFont(QFont('SimSun', 50))

        # 绘制弧形
        rect = QRect(0, 10, 800, 800)  # 位置和大小
        painter.drawArc(rect, 180 * 16,
                        30 * 16)  # rect 区域,0起始位置,50*16表示50度 1度=16a

        # 绘制带弦的弧
        painter.drawChord(rect, 90 * 16, 30 * 16)

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

        # 绘制椭圆
        painter.drawEllipse(50, 50, 50, 100)

        # 绘制多边形(多边形对象)
        point1 = QPoint(130, 120)
        point2 = QPoint(130, 150)
        point3 = QPoint(220, 180)
        point4 = QPoint(220, 170)
        point5 = QPoint(200, 150)
        # 多边形对象
        polygon = QPolygon([point1, point2, point3, point4, point5])
        painter.drawPolygon(polygon)

        # 绘制图片
        image = QImage(QPixmap('../images/ajax-loading.gif'))
        rect = QRect(100, 100, image.width(), image.height())
        painter.drawImage(rect, image)

        painter.end()
示例#23
0
文件: vis.py 项目: ihattan/VoiceVis
    def paintEvent(self, event):
        frstRad = min(self.width(), self.height()) / 2.5
        scndRad = frstRad * .75
        thrdRad = frstRad * .50
        frthRad = frstRad * .25

        radInc = frthRad * 0.9

        # visualization is centered on the widget
        visCenterX = int(self.width() / 2)
        visCenterY = int(self.height() / 2)

        painter = QPainter()
        painter.begin(self)
        painter.setRenderHint(QPainter.Antialiasing)

        painter.setPen(Qt.white)

        for i in range(self.numSlices):
            painter.setBrush(QColor(148, 141, 179))
            rad = int(frstRad + (radInc * self.radiiCoeffs[(0*self.numSlices) + i+1]))
            frame = QRect(visCenterX - rad, visCenterY - rad, rad*2, rad*2)
            painter.drawPie(frame, self.slicePoints[i], self.spanAngle)

            painter.setBrush(QColor(96, 88, 133))
            rad = int(scndRad + (radInc * self.radiiCoeffs[(1*self.numSlices) + i+1]))
            frame = QRect(visCenterX - rad, visCenterY - rad, rad*2, rad*2)
            painter.drawPie(frame, self.slicePoints[i], self.spanAngle)

            painter.setBrush(QColor(67, 59, 103))
            rad = int(thrdRad + (radInc * self.radiiCoeffs[(2*self.numSlices) + i+1]))
            frame = QRect(visCenterX - rad, visCenterY - rad, rad*2, rad*2)
            painter.drawPie(frame, self.slicePoints[i], self.spanAngle)

            painter.setBrush(QColor(50, 35, 75))
            rad = int(frthRad + (radInc * self.radiiCoeffs[(3*self.numSlices) + i+1]))
            frame = QRect(visCenterX - rad, visCenterY - rad, rad*2, rad*2)
            painter.drawPie(frame, self.slicePoints[i], self.spanAngle)

        painter.end()
示例#24
0
 def paintEvent(self, event):
     qp = QPainter(self)
     bounds = self.rect()
     qp.setBrush(self.unselectedBrush)
     if self.selectedSlice is 0:
         qp.setBrush(self.selectedBrush)
     qp.drawPie(bounds, 0, -120 * 16)
     qp.setBrush(self.unselectedBrush)
     if self.selectedSlice is 1:
         qp.setBrush(self.selectedBrush)
     qp.drawPie(bounds, -120 * 16, -120 * 16)
     qp.setBrush(self.unselectedBrush)
     if self.selectedSlice is 2:
         qp.setBrush(self.selectedBrush)
     qp.drawPie(bounds, -2 * 120 * 16, -120 * 16)
示例#25
0
    def paintEvent(self, event):
        selections = self.selectionModel()
        option = self.viewOptions()
        state = option.state

        background = option.palette.base()
        foreground = QPen(option.palette.color(QPalette.WindowText))
        textPen = QPen(option.palette.color(QPalette.Text))
        highlightedPen = QPen(option.palette.color(QPalette.HighlightedText))

        painter = QPainter(self.viewport())
        painter.setRenderHint(QPainter.Antialiasing)

        painter.fillRect(event.rect(), background)
        painter.setPen(foreground)

        # Viewport rectangles
        pieRect = QRect(self.margin, self.margin, self.pieSize, self.pieSize)
        keyPoint = QPoint(self.totalSize - self.horizontalScrollBar().value(),
                          self.margin - self.verticalScrollBar().value())

        if self.validItems > 0:
            painter.save()
            painter.translate(pieRect.x() - self.horizontalScrollBar().value(),
                              pieRect.y() - self.verticalScrollBar().value())
            painter.drawEllipse(0, 0, self.pieSize, self.pieSize)
            startAngle = 0.0

            for row in range(self.model().rowCount(self.rootIndex())):

                index = self.model().index(row, 1, self.rootIndex())
                value = self.model().data(index)

                if value > 0.0:
                    angle = 360 * value / self.totalValue

                    colorIndex = self.model().index(row, 0, self.rootIndex())
                    color = self.model().data(colorIndex, Qt.DecorationRole)

                    if self.currentIndex() == index:
                        painter.setBrush(QBrush(color, Qt.Dense4Pattern))
                    elif selections.isSelected(index):
                        painter.setBrush(QBrush(color, Qt.Dense3Pattern))
                    else:
                        painter.setBrush(QBrush(color))

                    painter.drawPie(0, 0, self.pieSize, self.pieSize,
                                    int(startAngle * 16), int(angle * 16))

                    startAngle += angle

            painter.restore()

            keyNumber = 0

            for row in range(self.model().rowCount(self.rootIndex())):
                index = self.model().index(row, 1, self.rootIndex())
                value = self.model().data(index)

                if value > 0.0:
                    labelIndex = self.model().index(row, 0, self.rootIndex())

                    option = self.viewOptions()
                    option.rect = self.visualRect(labelIndex)
                    if selections.isSelected(labelIndex):
                        option.state |= QStyle.State_Selected
                    if self.currentIndex() == labelIndex:
                        option.state |= QStyle.State_HasFocus
                    self.itemDelegate().paint(painter, option, labelIndex)

                    keyNumber += 1
示例#26
0
    def paintEvent(self, event):
        selections = self.selectionModel()
        option = self.viewOptions()
        state = option.state

        background = option.palette.base()
        foreground = QPen(option.palette.color(QPalette.WindowText))
        textPen = QPen(option.palette.color(QPalette.Text))
        highlightedPen = QPen(option.palette.color(QPalette.HighlightedText))

        painter = QPainter(self.viewport())
        painter.setRenderHint(QPainter.Antialiasing)

        painter.fillRect(event.rect(), background)
        painter.setPen(foreground)

        # Viewport rectangles
        pieRect = QRect(self.margin, self.margin, self.pieSize,
                self.pieSize)
        keyPoint = QPoint(self.totalSize - self.horizontalScrollBar().value(),
                self.margin - self.verticalScrollBar().value())

        if self.validItems > 0:
            painter.save()
            painter.translate(pieRect.x() - self.horizontalScrollBar().value(),
                    pieRect.y() - self.verticalScrollBar().value())
            painter.drawEllipse(0, 0, self.pieSize, self.pieSize)
            startAngle = 0.0

            for row in range(self.model().rowCount(self.rootIndex())):

                index = self.model().index(row, 1, self.rootIndex())
                value = self.model().data(index)

                if value > 0.0:
                    angle = 360*value/self.totalValue

                    colorIndex = self.model().index(row, 0, self.rootIndex())
                    color = self.model().data(colorIndex, Qt.DecorationRole)

                    if self.currentIndex() == index:
                        painter.setBrush(QBrush(color, Qt.Dense4Pattern))
                    elif selections.isSelected(index):
                        painter.setBrush(QBrush(color, Qt.Dense3Pattern))
                    else:
                        painter.setBrush(QBrush(color))

                    painter.drawPie(0, 0, self.pieSize, self.pieSize,
                            int(startAngle*16), int(angle*16))

                    startAngle += angle

            painter.restore()

            keyNumber = 0

            for row in range(self.model().rowCount(self.rootIndex())):
                index = self.model().index(row, 1, self.rootIndex())
                value = self.model().data(index)

                if value > 0.0:
                    labelIndex = self.model().index(row, 0, self.rootIndex())

                    option = self.viewOptions()
                    option.rect = self.visualRect(labelIndex)
                    if selections.isSelected(labelIndex):
                        option.state |= QStyle.State_Selected
                    if self.currentIndex() == labelIndex:
                        option.state |= QStyle.State_HasFocus
                    self.itemDelegate().paint(painter, option, labelIndex)

                    keyNumber += 1