Пример #1
0
    def drow(self, pos, state, drawLine):
        painter = QPainter(self.label.pixmap())
        if state:
            painter.setBrush(QBrush(QColor(255, 0, 0), Qt.SolidPattern))
            painter.setPen(QColor(255, 0, 0))
        else:
            brush = QBrush()
            brush.setTexture(self.label.orginalImage)
            painter.setBrush(brush)
            painter.setPen(QColor(Qt.transparent))
            painter.pen().setWidth(self.label.brushSize)
        painter.drawEllipse(pos.x() - self.label.brushSize / 2,
                            pos.y() - self.label.brushSize / 2,
                            self.label.brushSize, self.label.brushSize)
        if drawLine:
            painter.drawLine(pos, self.label.lastPos)

        painter2 = QPainter(self.label.selctedRegionImage)
        if state:
            painter2.setBrush(QBrush(QColor(255, 0, 0), Qt.SolidPattern))
            painter2.setPen(QColor(255, 0, 0))
        else:
            brush = QBrush()
            brush.setTexture(QPixmap(self.label.orginalImage.size()))
            painter2.setBrush(brush)
            painter2.setPen(QColor(Qt.transparent))
            painter2.pen().setWidth(self.label.brushSize)
        painter2.drawEllipse(pos.x() - self.label.brushSize / 2,
                             pos.y() - self.label.brushSize / 2,
                             self.label.brushSize, self.label.brushSize)
        if drawLine:
            painter2.drawLine(pos, self.label.lastPos)
        self.label.update()
Пример #2
0
 def drawShape(self, event, qp):
     pen = QPen(Qt.yellow)
     pen.setWidth(3)
     # rellenar fondo con patron de imagen
     brush = QBrush()
     brush.setTexture(QPixmap('image/small_image.jpg'))
     # establecer el QBrush
     qp.setBrush(brush)
     qp.setPen(pen)
     qp.drawRoundedRect(QRect(50, 50, 200, 150), 15, 15)
     # utilizar un patron predefinido
     brush.setStyle(Qt.DiagCrossPattern)
     qp.setBrush(brush)
     qp.drawEllipse(350, 50, 150, 150)
Пример #3
0
 def drawShape(self, event, qp):
     pen = QPen(Qt.yellow)
     pen.setWidth(3)
     # rellenar fondo con patron de imagen
     brush = QBrush()
     brush.setTexture(QPixmap('image/small_image.jpg'))
     # establecer el QBrush
     qp.setBrush(brush)
     qp.setPen(pen)
     qp.drawRoundedRect(QRect(50, 50, 200, 150), 15, 15)
     # utilizar un patron predefinido
     brush.setStyle(Qt.DiagCrossPattern)
     qp.setBrush(brush)
     qp.drawEllipse(350, 50, 150, 150)
Пример #4
0
 def drawMap(self):
     dark = QColor(20,20,20)
     light = QColor(211,211,211)
     brush = QBrush()
     pen = QPen()
     pen.setColor(QColor(0, 0, 0, 75))
     # Create graphic objects for map squares
     for y in range(0,len(self.map)):
         for x in range(0,len(self.map[y])):
             shape = QGraphicsRectItem(self.map[y][x].size*x,self.map[y][x].size*y,self.map[y][x].size,self.map[y][x].size)
             if self.map[y][x].isWall:
                 brush.setTexture(self.grass)
             else:
                 brush.setTexture(self.gravel)
             self.map[y][x].shape = shape
             shape.setPen(pen)
             shape.setBrush(brush)
             self.scene.addItem(shape)
Пример #5
0
    def paintEvent(self, event):
        painter = QPainter(self)
        painter.setRenderHint(QPainter.Antialiasing)
        painter.setRenderHint(QPainter.TextAntialiasing)

        pen = QPen()
        pen.setWidth(2)
        pen.setColor(Qt.red)
        painter.setPen(pen)

        texturePixmap = QPixmap("../image/texture2.jpg")
        brush = QBrush()
        brush.setStyle(Qt.TexturePattern)
        brush.setTexture(texturePixmap)
        painter.setBrush(brush)

        W = self.width()
        H = self.height()
        rect = QRect(W / 5, H / 5, 3 * W / 5, 3 * H / 5)
        painter.drawRect(rect)
Пример #6
0
    def __draw02_textureBrush(self):  #在窗口上绘图
        painter = QPainter(self)
        painter.setRenderHint(QPainter.Antialiasing)
        painter.setRenderHint(QPainter.TextAntialiasing)

        #设置画笔
        pen = QPen()
        pen.setWidth(3)  #线宽
        pen.setColor(Qt.red)  #划线颜色

        ## Qt::NoPen,Qt::SolidLine, Qt::DashLine, Qt::DotLine,Qt::DashDotLine,Qt::DashDotDotLine,Qt::CustomDashLine
        pen.setStyle(Qt.SolidLine)  #线的类型,实线、虚线等

        ## Qt::FlatCap, Qt::SquareCap,Qt::RoundCap
        pen.setCapStyle(Qt.RoundCap)  #线端点样式

        ## Qt::MiterJoin,Qt::BevelJoin,Qt::RoundJoin,Qt::SvgMiterJoin
        pen.setJoinStyle(Qt.RoundJoin)  #线的连接点样式

        painter.setPen(pen)

        ##设置画刷
        texturePixmap = QPixmap("texture.jpg")
        brush = QBrush()
        ##      brush.setColor(Qt.yellow)     #画刷颜色
        ##      brush.setStyle(Qt.SolidPattern)  #填充样式
        brush.setStyle(Qt.TexturePattern)  #画刷填充样式
        brush.setTexture(texturePixmap)  #设置材质图片
        painter.setBrush(brush)

        ##绘图
        W = self.width()  #绘图区宽度
        H = self.height()  #绘图区高度

        rect = QRect(W / 4, H / 4, W / 2, H / 2)
        painter.drawRect(rect)
Пример #7
0
    def setTiles(self):

        #background
        brush = QBrush(
        )  #QBrush(画刷)是一个基本的图形对象,用于填充如矩形,椭圆形,多边形等形状,QBrush有三种类型,预定义,过渡,和纹理图案
        pix = QPixmap(os.getcwd() + "/robotImages/tile.png")
        brush.setTexture(pix)
        brush.setStyle(24)
        self.setBackgroundBrush(brush)

        #wall:left、right、top、bottom都是QGraphicsRectItem类型
        #left
        left = QGraphicsRectItem()
        pix = QPixmap(os.getcwd() + "/robotImages/tileVert.png")  #获取贴图
        left.setRect(QRectF(0, 0, pix.width(),
                            self.height))  #尺寸:宽是图片宽度 ,高度是战场高度
        brush.setTexture(pix)  #设置贴图函数
        brush.setStyle(
            24
        )  #参数24指平铺格式(参数为枚举类型)详情见 https://doc.qt.io/qt-5/qt.html#BrushStyle-enum
        left.setBrush(brush)
        left.name = 'left'
        self.addItem(left)

        #right
        right = QGraphicsRectItem()
        right.setRect(self.width - pix.width(), 0, pix.width(),
                      self.height)  #尺寸:宽是图片的宽度、高是战场的高
        right.setBrush(brush)
        right.name = 'right'
        self.addItem(right)

        #top
        top = QGraphicsRectItem()
        pix = QPixmap(os.getcwd() + "/robotImages/tileHori.png")
        top.setRect(QRectF(0, 0, self.width, pix.height()))
        brush.setTexture(pix)
        brush.setStyle(24)
        top.setBrush(brush)
        top.name = 'top'
        self.addItem(top)

        #bottom
        bottom = QGraphicsRectItem()
        bottom.setRect(0, self.height - pix.height(), self.width, pix.height())
        bottom.setBrush(brush)
        bottom.name = 'bottom'
        self.addItem(bottom)
Пример #8
0
            def paintEvent(self, objQPaintEvent):
                p = QPainter()
                p.begin(self)

                pen = QPen(Qt.black, 2, Qt.SolidLine)
                p.setPen(pen)
                p.drawLine(20, 15, 150, 15)
                pen.setStyle(Qt.DashLine)
                p.setPen(pen)
                p.drawLine(20, 35, 150, 35)
                pen.setStyle(Qt.DotLine)
                p.setPen(pen)
                p.drawLine(20, 55, 150, 55)
                pen.setStyle(Qt.DashDotLine)
                p.setPen(pen)
                p.drawLine(20, 75, 150, 75)
                pen.setStyle(Qt.DashDotDotLine)
                p.setPen(pen)
                p.drawLine(20, 95, 150, 95)
                pen.setStyle(Qt.CustomDashLine)
                pen.setDashPattern([1, 4, 5, 4])
                p.setPen(pen)
                p.drawLine(20, 115, 150, 115)

                pen.setWidth(1)
                pen.setStyle(Qt.SolidLine)
                p.setPen(pen)
                brush = QBrush(Qt.SolidPattern)
                p.setBrush(brush)
                p.drawRect(180, 10, 40, 30)
                brush = QBrush(Qt.Dense5Pattern)
                p.setBrush(brush)
                p.drawRect(240, 10, 40, 30)
                brush = QBrush(Qt.Dense7Pattern)
                p.setBrush(brush)
                p.drawRect(300, 10, 40, 30)

                brush = QBrush(Qt.green, Qt.HorPattern)
                p.setBrush(brush)
                p.drawRect(180, 50, 40, 30)
                brush = QBrush(Qt.green, Qt.VerPattern)
                p.setBrush(brush)
                p.drawRect(240, 50, 40, 30)
                brush = QBrush(Qt.green, Qt.Dense6Pattern)
                brush = QBrush(Qt.green, Qt.CrossPattern)
                p.setBrush(brush)
                p.drawRect(300, 50, 40, 30)

                brush = QBrush(Qt.blue, Qt.BDiagPattern)
                p.setBrush(brush)
                p.drawRect(180, 90, 40, 30)
                brush = QBrush(Qt.blue, Qt.FDiagPattern)
                p.setBrush(brush)
                p.drawRect(240, 90, 40, 30)
                brush = QBrush(Qt.blue, Qt.DiagCrossPattern)
                p.setBrush(brush)
                p.drawRect(300, 90, 40, 30)

                g = QLinearGradient(180, 130, 220, 160)
                g.setColorAt(0, Qt.red)
                g.setColorAt(1, Qt.blue)
                brush = QBrush(g)
                p.setBrush(brush)
                p.drawRect(180, 130, 40, 30)
                g = QRadialGradient(260, 145, 20)
                g.setColorAt(0, Qt.red)
                g.setColorAt(0.5, Qt.yellow)
                g.setColorAt(1, Qt.blue)
                p.setBrush(g)
                p.drawRect(240, 130, 40, 30)
                g = QConicalGradient(320, 145, 0)
                g.setColorAt(0, Qt.red)
                g.setColorAt(0.4, Qt.yellow)
                g.setColorAt(0.8, Qt.blue)
                g.setColorAt(1, Qt.red)
                p.setBrush(g)
                p.drawRect(300, 130, 40, 30)

                brush = QBrush()
                brush.setTexture(QPixmap(":appres.img/texture.jpg"))
                p.setBrush(brush)
                pen.setColor(Qt.transparent)
                p.setPen(pen)
                p.drawRect(15, 130, 135, 35)

                p.end()
Пример #9
0
    def paintEvent(self, e):
        super().paintEvent(e)
        # 画鼠标位置处的圆
        if 1 in self.parent.painter_tools.values():
            painter = QPainter(self)
            painter.setPen(QPen(self.parent.pencolor, 1, Qt.SolidLine))
            rect = QRectF(self.px - self.parent.tool_width // 2,
                          self.py - self.parent.tool_width // 2,
                          self.parent.tool_width, self.parent.tool_width)
            painter.drawEllipse(rect)
            painter.end()
        if self.startpaint:

            while len(self.parent.eraser_pointlist):  # 画橡皮擦
                self.pixPainter = QPainter(self.pixmap())
                self.pixPainter.setRenderHint(QPainter.Antialiasing)
                self.pixPainter.setBrush(QColor(0, 0, 0, 0))
                self.pixPainter.setPen(Qt.NoPen)
                self.pixPainter.setCompositionMode(
                    QPainter.CompositionMode_Clear)
                new_pen_point = self.parent.eraser_pointlist.pop(0)
                if self.parent.old_pen[0] != -2 and new_pen_point[0] != -2:
                    self.pixPainter.drawEllipse(
                        new_pen_point[0] - self.parent.tool_width / 2,
                        new_pen_point[1] - self.parent.tool_width / 2,
                        self.parent.tool_width, self.parent.tool_width)

                self.parent.old_pen = new_pen_point
                self.pixPainter.end()

            while len(self.parent.pen_pointlist):  # 画笔功能
                self.pixPainter = QPainter(self.pixmap())
                self.pixPainter.setRenderHint(QPainter.Antialiasing)
                self.pixPainter.setBrush(self.parent.pencolor)
                self.pixPainter.setPen(
                    QPen(self.parent.pencolor, self.parent.tool_width,
                         Qt.SolidLine))
                new_pen_point = self.parent.pen_pointlist.pop(0)
                if self.parent.old_pen[0] != -2 and new_pen_point[0] != -2:
                    path = QPainterPath(
                        QPoint(self.parent.old_pen[0], self.parent.old_pen[1]))
                    path.quadTo(
                        QPoint(
                            (new_pen_point[0] + self.parent.old_pen[0]) / 2,
                            (new_pen_point[1] + self.parent.old_pen[1]) / 2),
                        QPoint(new_pen_point[0], new_pen_point[1]))
                    self.pixPainter.drawPath(path)
                self.parent.old_pen = new_pen_point
                self.pixPainter.end()

            while len(self.parent.drawpix_pointlist):  # 画马赛克/材质贴图功能
                self.pixPainter = QPainter(self.pixmap())
                self.pixPainter.setRenderHint(QPainter.Antialiasing)
                brush = QBrush(self.parent.pencolor)
                brush.setTexture(QPixmap(self.pixpng))
                self.pixPainter.setBrush(brush)
                self.pixPainter.setPen(Qt.NoPen)
                new_pen_point = self.parent.drawpix_pointlist.pop(0)
                if self.parent.old_pen[0] != -2 and new_pen_point[0] != -2:
                    self.pixPainter.drawEllipse(
                        new_pen_point[0] - self.parent.tool_width / 2,
                        new_pen_point[1] - self.parent.tool_width / 2,
                        self.parent.tool_width, self.parent.tool_width)

                self.parent.old_pen = new_pen_point
                self.pixPainter.end()

            if self.parent.drawrect_pointlist[0][
                    0] != -2 and self.parent.drawrect_pointlist[1][
                        0] != -2:  # 画方形
                self.pixPainter = QPainter(self.pixmap())
                self.pixPainter.setRenderHint(QPainter.Antialiasing)
                temppainter = QPainter(self)
                temppainter.setPen(QPen(self.parent.pencolor, 3, Qt.SolidLine))

                poitlist = self.parent.drawrect_pointlist
                temppainter.drawRect(min(poitlist[0][0], poitlist[1][0]),
                                     min(poitlist[0][1], poitlist[1][1]),
                                     abs(poitlist[0][0] - poitlist[1][0]),
                                     abs(poitlist[0][1] - poitlist[1][1]))
                temppainter.end()
                if self.parent.drawrect_pointlist[2] == 1:
                    self.pixPainter.setPen(
                        QPen(self.parent.pencolor, 3, Qt.SolidLine))
                    self.pixPainter.drawRect(
                        min(poitlist[0][0], poitlist[1][0]),
                        min(poitlist[0][1], poitlist[1][1]),
                        abs(poitlist[0][0] - poitlist[1][0]),
                        abs(poitlist[0][1] - poitlist[1][1]))

                    self.parent.drawrect_pointlist = [[-2, -2], [-2, -2], 0]
                self.pixPainter.end()

            if self.parent.drawcircle_pointlist[0][
                    0] != -2 and self.parent.drawcircle_pointlist[1][
                        0] != -2:  # 画圆
                self.pixPainter = QPainter(self.pixmap())
                self.pixPainter.setRenderHint(QPainter.Antialiasing)
                temppainter = QPainter(self)
                temppainter.setPen(QPen(self.parent.pencolor, 3, Qt.SolidLine))
                poitlist = self.parent.drawcircle_pointlist
                temppainter.drawEllipse(min(poitlist[0][0], poitlist[1][0]),
                                        min(poitlist[0][1], poitlist[1][1]),
                                        abs(poitlist[0][0] - poitlist[1][0]),
                                        abs(poitlist[0][1] - poitlist[1][1]))
                temppainter.end()
                if self.parent.drawcircle_pointlist[2] == 1:
                    self.pixPainter.setPen(
                        QPen(self.parent.pencolor, 3, Qt.SolidLine))
                    self.pixPainter.drawEllipse(
                        min(poitlist[0][0], poitlist[1][0]),
                        min(poitlist[0][1], poitlist[1][1]),
                        abs(poitlist[0][0] - poitlist[1][0]),
                        abs(poitlist[0][1] - poitlist[1][1]))
                    self.parent.drawcircle_pointlist = [[-2, -2], [-2, -2], 0]
                self.pixPainter.end()

            if self.parent.drawarrow_pointlist[0][
                    0] != -2 and self.parent.drawarrow_pointlist[1][
                        0] != -2:  # 画箭头
                self.pixPainter = QPainter(self.pixmap())
                self.pixPainter.setRenderHint(QPainter.Antialiasing)
                temppainter = QPainter(self)

                poitlist = self.parent.drawarrow_pointlist
                temppainter.translate(poitlist[0][0], poitlist[0][1])
                degree = math.degrees(
                    math.atan2(poitlist[1][1] - poitlist[0][1],
                               poitlist[1][0] - poitlist[0][0]))
                temppainter.rotate(degree)
                dx = math.sqrt((poitlist[1][1] - poitlist[0][1])**2 +
                               (poitlist[1][0] - poitlist[0][0])**2)
                dy = 30
                temppainter.drawPixmap(0, -dy / 2,
                                       QPixmap(':/arrow.png').scaled(dx, dy))

                temppainter.end()
                if self.parent.drawarrow_pointlist[2] == 1:
                    self.pixPainter.translate(poitlist[0][0], poitlist[0][1])
                    degree = math.degrees(
                        math.atan2(poitlist[1][1] - poitlist[0][1],
                                   poitlist[1][0] - poitlist[0][0]))
                    self.pixPainter.rotate(degree)
                    dx = math.sqrt((poitlist[1][1] - poitlist[0][1])**2 +
                                   (poitlist[1][0] - poitlist[0][0])**2)
                    dy = 30
                    self.pixPainter.drawPixmap(
                        0, -dy / 2,
                        QPixmap(':/arrow.png').scaled(dx, dy))
                    self.parent.drawarrow_pointlist = [[-2, -2], [-2, -2], 0]
                    # self.parent.drawarrow_pointlist[0] = [-2, -2]
                self.pixPainter.end()

            if len(self.parent.drawtext_pointlist
                   ) > 1 or self.parent.text_box.paint:  # 画文字
                self.pixPainter = QPainter(self.pixmap())
                self.pixPainter.setRenderHint(QPainter.Antialiasing)
                self.parent.text_box.paint = False
                # print(self.parent.drawtext_pointlist)
                text = self.parent.text_box.toPlainText()
                self.parent.text_box.clear()
                pos = self.parent.drawtext_pointlist.pop(0)
                if text:
                    self.pixPainter.setFont(
                        QFont('微软雅黑', self.parent.tool_width))
                    self.pixPainter.setPen(
                        QPen(self.parent.pencolor, 3, Qt.SolidLine))
                    self.pixPainter.drawText(
                        pos[0] +
                        self.parent.text_box.document.size().height() / 8,
                        pos[1] +
                        self.parent.text_box.document.size().height() * 32 /
                        41, text)

                self.pixPainter.end()
        else:
            self.startpaint = 1