示例#1
0
    def paintEvent(self, event):

        qp = QPainter()

        qp.begin(self)
        self.drawWidget(qp)
        qp.end()
示例#2
0
    def paintEvent(self, e):

        qp = QPainter()

        qp.begin(self)
        self.drawPoints(qp)
        qp.end()
示例#3
0
 def relationship_pixmap(self, str_object_class_name_list):
     """A pixmap for the given object_class name list,
     created by rendering several object pixmaps next to each other."""
     if not str_object_class_name_list:
         engine = CharIconEngine("\uf1b3", 0)
         return engine.pixmap(self.ICON_SIZE)
     object_class_name_list = tuple(str_object_class_name_list.split(","))
     if object_class_name_list in self.rel_cls_pixmap_cache:
         return self.rel_cls_pixmap_cache[object_class_name_list]
     scene = QGraphicsScene()
     x = 0
     for j, object_class_name in enumerate(object_class_name_list):
         pixmap = self.object_pixmap(object_class_name)
         pixmap_item = scene.addPixmap(pixmap)
         if j % 2 == 0:
             y = 0
         else:
             y = -0.875 * 0.75 * pixmap_item.boundingRect().height()
             pixmap_item.setZValue(-1)
         pixmap_item.setPos(x, y)
         x += 0.875 * 0.5 * pixmap_item.boundingRect().width()
     pixmap = QPixmap(scene.itemsBoundingRect().toRect().size())
     pixmap.fill(Qt.transparent)
     painter = QPainter(pixmap)
     painter.setRenderHint(QPainter.Antialiasing, True)
     scene.render(painter)
     painter.end()
     self.rel_cls_pixmap_cache[object_class_name_list] = pixmap
     return pixmap
示例#4
0
    def paintEvent(self, event):
        contents_y = self.edit.verticalScrollBar().value()
        page_bottom = contents_y + self.edit.viewport().height()
        font_metrics = self.fontMetrics()
        current_block = self.edit.document().findBlock(self.edit.textCursor().position())
        painter = QPainter(self)
        line_count = 0
        block = self.edit.document().begin()
        while block.isValid():
            line_count += 1
            position = self.edit.document().documentLayout().blockBoundingRect(block).topLeft()
            if position.y() > page_bottom:
                break
            bold = False
            if block == current_block:
                bold = True
                font = painter.font()
                font.setBold(True)
                painter.setFont(font)
                self.current = line_count
            painter.drawText(self.width() - font_metrics.width(str(line_count)) - 10,
                             round(position.y()) - contents_y + font_metrics.ascent(),
                             str(line_count))
            if bold:
                font = painter.font()
                font.setBold(False)
                painter.setFont(font)
            block = block.next()
        self.highest_line = line_count
        painter.end()

        QWidget.paintEvent(self, event)
示例#5
0
 def group_object_pixmap(self, object_class_name):
     if object_class_name in self.group_obj_pixmap_cache:
         return self.group_obj_pixmap_cache[object_class_name]
     object_pixmap = self.object_pixmap(object_class_name)
     size = object_pixmap.size()
     width, height = size.width(), size.height()
     radius = width / 8
     pen_width = width / 32
     margin = width / 16
     pen = QPen(QApplication.palette().shadow().color())
     pen.setWidth(pen_width)
     path = QPainterPath()
     path.addRoundedRect(0, 0, width, height, radius, radius)
     pixmap = QPixmap(size)
     pixmap.fill(Qt.transparent)
     painter = QPainter(pixmap)
     painter.setRenderHint(QPainter.Antialiasing, True)
     painter.fillPath(path, QApplication.palette().window())
     painter.setPen(pen)
     painter.drawRoundedRect(pixmap.rect().adjusted(pen_width, pen_width, -pen_width, -pen_width), radius, radius)
     painter.drawPixmap(
         pixmap.rect().adjusted(margin, margin, -width / 2, -height / 2), object_pixmap, object_pixmap.rect()
     )
     painter.drawPixmap(
         pixmap.rect().adjusted(width / 2, margin, -margin, -height / 2), object_pixmap, object_pixmap.rect()
     )
     painter.drawPixmap(
         pixmap.rect().adjusted(width / 2, height / 2, -margin, -margin), object_pixmap, object_pixmap.rect()
     )
     painter.drawPixmap(
         pixmap.rect().adjusted(margin, height / 2, -width / 2, -margin), object_pixmap, object_pixmap.rect()
     )
     painter.end()
     self.group_obj_pixmap_cache[object_class_name] = pixmap
     return pixmap
示例#6
0
    def drawElts(self,elt_list,colorElt,colotTxt):
        for elt in elt_list :
            l_pp = self.getRealFromUiCoord(elt.getX(),elt.getY())
            eltP = QPainter()
            eltP.begin(self)
            eltP.setBrush(QBrush(QColor(colorElt)))

            myPen = QPen()
            myPen.setBrush(QBrush(QColor(colotTxt)))

            if 'rect' in elt.getID() :
                l_pw = elt.getWidth()/self.scaleFactor
                l_pl = elt.getLength()/self.scaleFactor
                eltP.drawRect(l_pp.getX()-(l_pw/2),l_pp.getY()-(l_pl/2),l_pw,l_pl)

                eltP.setPen(myPen)
                eltP.drawText(l_pp.getX()-(l_pw/4),l_pp.getY(),l_pw,l_pl,1,elt.getID())
            elif 'circle' in elt.getID() :
                l_pr = elt.getRayon()/self.scaleFactor
                eltP.drawEllipse(l_pp.getX()-(l_pr/2),l_pp.getY()-(l_pr/2),l_pr,l_pr)

                eltP.setPen(myPen)
                eltP.drawText(l_pp.getX()-l_pr/3,l_pp.getY(),l_pr,l_pr,1,elt.getID())
            else :
                pass
            eltP.end()
示例#7
0
    def save_image_to(self, path):

        TOP_MARGIN = 50
        LEFT_MARGIN = 50

        # Determine the size of the entire graph
        graph_size = self._graph_size()

        image_size = QSize(graph_size.width() + LEFT_MARGIN * 2,
                           graph_size.height() + TOP_MARGIN * 2
                           )

        image = QImage(image_size, QImage.Format_ARGB32)
        image.fill(Qt.white)  # white background

        painter = QPainter(image)
        painter.translate(TOP_MARGIN, LEFT_MARGIN)
        painter.setRenderHint(QPainter.TextAntialiasing)
        self._paint(painter,
                    QPoint(-TOP_MARGIN, -LEFT_MARGIN),
                    QPoint(image_size.width(), image_size.height())
                    )
        painter.end()

        image.save(path)
示例#8
0
    def paintEvent(self, arg__1: QPaintEvent):
        # super(Push, self).paintEvent(arg__1)
        # lightgrey
        painter = QPainter()
        painter.begin(self)
        pen = QPen(QColor(162, 181, 205), 2, Qt.SolidLine)
        painter.setBrush(QBrush(QColor(255, 255, 255)))
        painter.setPen(pen)
        painter.setRenderHint(QPainter.Antialiasing, True)
        rect = QRect()
        rect.moveTo(1, 10)
        rect.setWidth(140)
        rect.setHeight(140)
        painter.drawRoundedRect(rect, 5, 5)
        painter.drawConvexPolygon(
            [QPoint(60, 10), QPoint(80, 10),
             QPoint(70, 1)])

        pen.setColor(QColor(255, 255, 255))
        painter.setPen(pen)
        painter.drawLine(63, 10, 77, 10)
        pen.setWidth(1)
        painter.setPen(pen)
        painter.drawPoints([QPoint(61, 10), QPoint(78, 10)])
        painter.end()
示例#9
0
 def paintEvent(self, event):
     qp = QPainter()
     qp.begin(self)
     try:
         self.paintMap(qp)
     finally:
         qp.end()
示例#10
0
    def export_to_pdf(self: 'BaseWidget', filename: Path):
        width_a4 = 730
        height_a4 = 1060

        is_landscape = self.width() > self.height()
        if is_landscape:
            self.resize(height_a4, width_a4)  # landscape
        else:
            self.resize(width_a4, height_a4)  # portrait

        # render widget to picture
        picture = QPicture()
        painter = QPainter(picture)
        self.render(painter, QPoint(0, 0))
        painter.end()

        # set up PDF printer
        printer = QPrinter()
        printer.setOutputFormat(QPrinter.PdfFormat)
        printer.setOutputFileName(str(filename))
        if is_landscape:
            printer.setOrientation(QPrinter.Landscape)

        # draw picture on printer
        painter = QPainter()
        ok = painter.begin(printer)
        if ok:
            painter.drawPicture(0, 0, picture)
            ok = painter.end()
        return ok
示例#11
0
    def mousePressEvent(self, event):
        self._mouseLastPos = self.getLocalMousePos()

        if event.button() == Qt.LeftButton:
            self._mousePressed = MouseButton.LEFT
        elif event.button() == Qt.RightButton:
            self._mousePressed = MouseButton.RIGHT

        if self._drawMode == DrawingMode.PEN:
            if self._mousePressed == MouseButton.LEFT:
                self.doDraw(event.localPos(), True)

        elif self._drawMode == DrawingMode.DOTTED:
            if self._mousePressed == MouseButton.LEFT:
                self.doDraw(event.localPos(), True)
            elif self._mousePressed == MouseButton.RIGHT:
                self.doDraw(event.localPos(), False)

        elif self._drawMode == DrawingMode.ERASE:
            if self._mousePressed == MouseButton.LEFT:
                self.doDraw(event.localPos(), False)

        elif self._drawMode == DrawingMode.LINE:
            if self._mousePressed == MouseButton.LEFT:
                self._lineState = [event.localPos(), event.localPos()]
                painter = QPainter(self._scratch)
                painter.setPen(Qt.black)
                painter.drawLine(self._lineState[0], self._lineState[1])
                painter.end()
                self.update(self.rect())

        elif self._drawMode == DrawingMode.ATTR:
            if self._mousePressed == MouseButton.LEFT:
                self.doDrawAttr(event.localPos())
示例#12
0
    def export_to_picture(self: 'BaseWidget', filename: Path):
        picture = QPixmap(self.width(), self.height())
        painter = QPainter(picture)
        self.render(painter, QPoint(0, 0))
        painter.end()

        return picture.save(str(filename))
示例#13
0
class ImageViewer(QWidget):
    def __init__(self):
        super(ImageViewer, self).__init__()
        self.painter = QPainter()
        self.my_pen = QPen(QColor("red"))
        self.my_pen.setWidth(5)

        self.my_brush = QBrush(QColor("#123456"))

        self.photo = QPixmap()
        self.photo_rect = QRect()

    def set_pixmap(self, image_path):
        self.photo.load(image_path)
        self.repaint()

    def paintEvent(self, event):
        self.painter.begin(self)
        self.draw()
        self.painter.end()

    def draw(self):
        rect = self.rect()

        self.painter.setPen(self.my_pen)
        self.painter.setBrush(self.my_brush)

        photo = self.photo.scaled(QSize(rect.width(), rect.height()), Qt.KeepAspectRatio, Qt.SmoothTransformation)
        self.photo_rect.setRect(rect.x(), rect.y(), photo.width(), photo.height())
        self.photo_rect.moveCenter(rect.center())

        self.painter.drawPixmap(self.photo_rect, photo)
 def paintEvent(self, event):
     painter = QPainter(self)
     painter.begin(self)
     painter.setPen(QPen(QColor(Qt.black), self.thickness, self.penStyle))
     painter.drawLine(20, self.height / 2, self.width, self.height / 2)
     painter.end()
     self.update()
示例#15
0
    def paintEvent(self, event):
        """
        Redraw application.
        """
        super(TileSelector, self).paintEvent(event)

        painter = QPainter(self)

        painter.setPen(QColor(127, 127, 127))

        painter.drawPixmap(0, 0,
                           self.pixmap.size().width() * self.scale,
                           self.pixmap.size().height() * self.scale,
                           self.pixmap)

        for y in range(0, self.pixmap.size().height(), self.tile_size[1]):
            for x in range(0, self.pixmap.size().width(), self.tile_size[0]):
                painter.drawRect(x * self.scale, y * self.scale,
                                 self.tile_size[0] * self.scale,
                                 self.tile_size[1] * self.scale)

        x, y = self.get_tile_map_coords(self.main.tile)
        painter.setPen(QColor(200, 0, 0))
        painter.drawRect(x * self.scale, y * self.scale,
                         self.tile_size[0] * self.scale,
                         self.tile_size[1] * self.scale)

        painter.end()
示例#16
0
    def draw_grid(self):
        """
        Dessine la grille de jeu en juxtaposant les images contenant chaque case. Chaque image est redimensionnée et ajustée à la taille de la grille.
        """
        painter = QPainter(self.label.pixmap())
        names = [
            "Empty", "N", "E", "EN", "S", "NS", "ES", "ENS", "W", "NW", "EW",
            "ENW", "SW", "NSW", "ESW", "ENSW"
        ]
        images = [
            QPixmap(IMAGES_PATH + name + ".bmp", format="bmp")
            for name in names
        ]

        for x in range(0, self.game.board.width):
            for y in range(0, self.game.board.height):
                painter.drawPixmap(
                    QPoint(self.DIMENSION / self.game.board.height * y,
                           self.DIMENSION / self.game.board.width * x),
                    images[int(str(self.game.board.grid[x][y]))].scaled(
                        self.DIMENSION / self.game.board.width,
                        self.DIMENSION / self.game.board.height))

        self.update()
        painter.end()
示例#17
0
    def printImage(self):  #Ok
        """Imprimir Imagem
        """
        printer = QPrinter()
        printer.setOutputFormat(QPrinter.NativeFormat)

        prnt_dlg = QPrintDialog(printer)

        if (prnt_dlg.exec_() == QPrintDialog.Accepted):

            painter = QPainter()

            painter.begin(printer)

            rect = QRect(painter.viewport())

            size = QSize(self.img_lbl.pixmap().size())
            size.scale(rect.size(), Qt.KeepAspectRatio)

            painter.setViewport(rect.x(), rect.y(), size.width(),
                                size.height())
            painter.setWindow(self.img_lbl.pixmap().rect())

            painter.drawPixmap(0, 0, self.img_lbl.pixmap())

            painter.end()
示例#18
0
    def draw_robots_and_goal(self):
        self.draw_grid()

        painter = QPainter(self.label.pixmap())

        goal_img_name = ICON_PATH + "/goal_" + str(
            self.game.goal.color) + ".png"
        painter.drawPixmap(
            QPoint(
                self.DIMENSION / self.game.board.height *
                self.game.goal.position[1], self.DIMENSION /
                self.game.board.width * self.game.goal.position[0]),
            QPixmap(goal_img_name, format="png").scaled(
                self.DIMENSION / self.game.board.width * 0.9,
                self.DIMENSION / self.game.board.height * 0.9))

        images = [
            QPixmap(ICON_PATH + "robot_" + str(color) + ".png", format="png")
            for color in self.game.color_keys
        ]

        for i, robot in enumerate(self.game.robots):

            painter.drawPixmap(
                QPoint(
                    self.DIMENSION / self.game.board.height *
                    self.game.robots[robot].position[1],
                    self.DIMENSION / self.game.board.width *
                    self.game.robots[robot].position[0]),
                images[i].scaled(self.DIMENSION / self.game.board.width * 0.8,
                                 self.DIMENSION / self.game.board.height))

        self.update()
        painter.end()
示例#19
0
    def paintEvent(self, event):
        painter = QPainter(self)
        painter.setRenderHint(QPainter.Antialiasing, on=True)

        self.drawScale(painter)
        self.drawBall(painter)
        painter.end()
示例#20
0
    def paintEvent(self, event):
        s = self.size()
        qp = QPainter()
        qp.begin(self)
        qp.setRenderHint(QPainter.Antialiasing, True)
        qp.setPen(Qt.NoPen)
        qp.setBrush(QColor(120, 120, 120))
        qp.drawEllipse(0, 0, 20, 20)
        rg = QRadialGradient(int(self.width() / 2), int(self.height() / 2), 12)
        rg.setColorAt(0, QColor(255, 255, 255))
        rg.setColorAt(0.6, QColor(255, 255, 255))
        rg.setColorAt(1, QColor(205, 205, 205))
        qp.setBrush(QBrush(rg))
        qp.drawEllipse(1, 1, 18, 18)

        qp.setBrush(QColor(210, 210, 210))
        qp.drawEllipse(2, 2, 16, 16)

        if self.__enabled:
            lg = QLinearGradient(3, 18, 20, 4)
            lg.setColorAt(0, QColor(255, 255, 255, 255))
            lg.setColorAt(0.55, QColor(230, 230, 230, 255))
            lg.setColorAt(0.72, QColor(255, 255, 255, 255))
            lg.setColorAt(1, QColor(255, 255, 255, 255))
            qp.setBrush(lg)
            qp.drawEllipse(3, 3, 14, 14)
        else:
            lg = QLinearGradient(3, 18, 20, 4)
            lg.setColorAt(0, QColor(230, 230, 230))
            lg.setColorAt(0.55, QColor(210, 210, 210))
            lg.setColorAt(0.72, QColor(230, 230, 230))
            lg.setColorAt(1, QColor(230, 230, 230))
            qp.setBrush(lg)
            qp.drawEllipse(3, 3, 14, 14)
        qp.end()
示例#21
0
 def paintEvent(self, event):
     """overrides paint event to handle text"""
     qp = QPainter()
     qp.begin(self)
     if self.main.drawValues():
         self.drawText(event, qp)
     qp.end()
示例#22
0
    def paintEvent(self, event):
        s = self.size()
        qp = QPainter()
        qp.begin(self)
        qp.setRenderHint(QPainter.Antialiasing, True)
        pen = QPen(Qt.NoPen)
        qp.setPen(pen)
        qp.setBrush(QColor(154, 205, 50))
        if self.__enabled:
            qp.setBrush(QColor(154, 190, 50))
            qp.drawRoundedRect(0, 0, s.width(), s.height(), 10, 10)

            lg = QLinearGradient(0, 25, 70, 0)
            lg.setColorAt(0, QColor(154, 184, 50))
            lg.setColorAt(0.35, QColor(154, 210, 50))
            lg.setColorAt(0.85, QColor(154, 184, 50))
            qp.setBrush(lg)
            qp.drawRoundedRect(1, 1, s.width() - 2, s.height() - 2, 8, 8)
        else:
            qp.setBrush(QColor(150, 150, 150))
            qp.drawRoundedRect(0, 0, s.width(), s.height(), 10, 10)

            lg = QLinearGradient(5, 25, 60, 0)
            lg.setColorAt(0, QColor(190, 190, 190))
            lg.setColorAt(0.35, QColor(230, 230, 230))
            lg.setColorAt(0.85, QColor(190, 190, 190))
            qp.setBrush(lg)
            qp.drawRoundedRect(1, 1, s.width() - 2, s.height() - 2, 8, 8)
        qp.end()
    def event(self, event):
        if event.type() == QEvent.TouchBegin or event.type(
        ) == QEvent.TouchUpdate or event.type() == QEvent.TouchEnd:
            touchPoints = event.touchPoints()
            for touchPoint in touchPoints:
                if touchPoint.state() == Qt.TouchPointStationary:
                    continue
                else:
                    rect = touchPoint.rect()
                    if rect.isEmpty():
                        diameter = 50 * touchPoint.pressure()
                        rect.setSize(QSizeF(diameter, diameter))

                    painter = QPainter(self.image)
                    painter.setPen(Qt.NoPen)
                    painter.setBrush(self.myPenColors[touchPoint.id() %
                                                      len(self.myPenColors)])
                    painter.drawEllipse(rect)
                    painter.end()

                    self.modified = True
                    rad = 2
                    self.update(rect.toRect().adjusted(-rad, -rad, +rad, +rad))

        else:
            return super(ScribbleArea, self).event(event)
        return True
示例#24
0
    def paintEvent(self, event):
        contents_y = self.edit.verticalScrollBar().value()
        page_bottom = contents_y + self.edit.viewport().height()
        font_metrics = self.fontMetrics()
        current_block = self.edit.document().findBlock(
            self.edit.textCursor().position())
        painter = QPainter(self)
        line_count = 0
        block = self.edit.document().begin()
        while block.isValid():
            line_count += 1
            position = self.edit.document().documentLayout().blockBoundingRect(
                block).topLeft()
            if position.y() > page_bottom:
                break
            bold = False
            if block == current_block:
                bold = True
                font = painter.font()
                font.setBold(True)
                painter.setFont(font)
                self.current = line_count
            painter.drawText(
                self.width() - font_metrics.width(str(line_count)) - 10,
                round(position.y()) - contents_y + font_metrics.ascent(),
                str(line_count))
            if bold:
                font = painter.font()
                font.setBold(False)
                painter.setFont(font)
            block = block.next()
        self.highest_line = line_count
        painter.end()

        QWidget.paintEvent(self, event)
示例#25
0
文件: view.py 项目: nitrotm/2dtagger
    def run(self):
        image = QImage()
        image.load(str(self.filename))

        mask = QImage(image.size(), QImage.Format_RGB32)
        mask.fill(Qt.black)

        maskfile = self.filename.parent / (self.filename.stem + ".mask")
        if maskfile.exists():
            bitmap = QImage(str(maskfile))
            if bitmap.size() != image.size():
                raise Exception("Mask %s doesn't match image size" % maskfile)
            mask.fill(QColor.fromRgbF(1.0, 0.0, 1.0))
            p = QPainter(mask)
            p.setCompositionMode(QPainter.CompositionMode_Multiply)
            p.drawImage(mask.rect(), bitmap)
            p.end()

        self.view.imagefile = self.filename
        self.view.image = image
        self.view.mask = mask
        self.view.maskfile = maskfile

        self.view.path = list()
        self.view.changed = False
        self.view.update()
示例#26
0
    def paintEvent(self, event):
        """
        custom paint event to draw horizontal line and handles at current y level
        """
        super().paintEvent(event)
        painter = QPainter(self)
        #painter.beginNativePainting()
        #painter.setRenderHint(QPainter.Antialiasing)
        x1,y1,x2,y2 = self.rect().getCoords()
        #painter.setPen(QPen(Qt.gray, 1))
        #painter.drawRect(self.rect())
        painter.setPen(QPen(COLOR, 1))
        painter.drawLine(QPoint(x1, y1+(y2-y1)/2), QPoint(x2, y1+(y2-y1)/2))
        path = QPainterPath()
        path.moveTo(x1, y1)
        path.lineTo(x1, y1 + y2)
        path.lineTo(10, y1 + y2/2)
        path.lineTo(x1, y1)
        painter.fillPath(path, QBrush(COLOR))
        path = QPainterPath()
        path.moveTo(x2+1, y1)
        path.lineTo(x2+1, y1 + y2)
        path.lineTo(x2 - 9, y1 + y2/2)
        path.lineTo(x2+1, y1)
        painter.fillPath(path, QBrush(COLOR))

        #painter.endNativePainting()
        painter.end()
示例#27
0
    def paintEvent(self, event):
        s = self.size()
        qp = QPainter()
        qp.begin(self)
        qp.setRenderHint(QPainter.Antialiasing, True)
        qp.setPen(self.penColor)
        qp.setBrush(self.fillColor)
        qp.drawRect(0, 0, s.width(), s.height())

        if self.drawDrag:
            pen = QPen(Qt.white, 5)
            pen.setCapStyle(Qt.RoundCap)
            qp.setPen(pen)
            qp.setBrush(self.fillColor)

            outerWidth = s.width() - 60
            outerHeight = s.height() - 60

            ow = int(s.width() / 2 - outerWidth / 2)
            oh = int(s.height() / 2 - outerHeight / 2)
            qp.drawRoundedRect(ow, oh, outerWidth, outerHeight, 5, 5)

            qp.setBrush(Qt.white)
            thickness = 12
            length = 50
            roundness = thickness / 2

            vS = int(s.width() / 2 - thickness / 2)
            vE = int(s.height() / 2 - length / 2)
            qp.drawRoundedRect(vS, vE, thickness, length, roundness, roundness)
            hS = int(s.width() / 2 - length / 2)
            hE = int(s.height() / 2 - thickness / 2)
            qp.drawRoundedRect(hS, hE, length, thickness, roundness, roundness)

        qp.end()
示例#28
0
文件: view.py 项目: arptra/Corewar
    def render_empty_bytes_to_pixmap(self, address=0, count=4096):
        pixmap_painter = QPainter(self.bytes_pixmap)
        pixmap_painter.setFont(self.font)

        self.print_to_pixmap(pixmap_painter, address, "00" * count, PEN_EMPTY)

        pixmap_painter.end()
示例#29
0
    def save_image_to(self,
                      path,
                      top_margin=50,
                      bottom_margin=50,
                      left_margin=50,
                      right_margin=50):

        margins = QMarginsF(left_margin, top_margin, right_margin,
                            bottom_margin)

        oldRect = self.scene().sceneRect()
        minRect = self.scene().itemsBoundingRect()
        imgRect = minRect.marginsAdded(margins)

        image = QImage(imgRect.size().toSize(), QImage.Format_ARGB32)
        image.fill(Qt.white)
        painter = QPainter(image)

        painter.setRenderHints(QPainter.Antialiasing
                               | QPainter.SmoothPixmapTransform
                               | QPainter.HighQualityAntialiasing)

        # draw the image
        self.scene().setSceneRect(imgRect)
        self.scene().render(painter)
        image.save(path)

        # cleanup
        painter.end()

        # restore the old scene rect
        self.scene().setSceneRect(oldRect)
示例#30
0
    def paintEvent(self, event):
        outerRadius = min(self.width(), self.height())
        baseRect = QRectF(1, 1, outerRadius - 2, outerRadius - 2)

        buffer = QImage(outerRadius, outerRadius, QImage.Format_ARGB32)
        buffer.fill(0)

        p = QPainter(buffer)
        p.setRenderHint(QPainter.Antialiasing)

        # data brush
        self.rebuildDataBrushIfNeeded()

        # background
        self.drawBackground(p, buffer.rect())

        # base circle
        self.drawBase(p, baseRect)

        # data circle
        arcStep = 360.0 / (self.max - self.min) * self.value
        self.drawValue(p, baseRect, self.value, arcStep)

        # center circle
        innerRect, innerRadius = self.calculateInnerRect(baseRect, outerRadius)
        self.drawInnerBackground(p, innerRect)

        # text
        self.drawText(p, innerRect, innerRadius, self.value)

        # finally draw the bar
        p.end()

        painter = QPainter(self)
        painter.drawImage(0, 0, buffer)
示例#31
0
 def findIcons(self):
     if hou.applicationVersion()[0] < 15:
         for category in os.listdir(self.path):
             for ico in os.listdir(os.path.join(self.path, category)):
                 iconPath = os.path.join(
                     os.path.join(self.path, category, ico))
                 iconName = '_'.join([category, os.path.splitext(ico)[0]])
                 self.icons[iconName] = QPixmap(iconPath)
     else:
         zf = zipfile.ZipFile(self.path, 'r')
         for f in zf.namelist():
             if f.startswith('old'): continue
             if os.path.splitext(f)[-1] == '.svg':
                 svg = QSvgRenderer(QByteArray(zf.read(f)))
                 if not svg.isValid():
                     continue
                 pixmap = QPixmap(iconSize, iconSize)
                 painter = QPainter()
                 painter.begin(pixmap)
                 pixmap.fill(QColor(Qt.black))
                 svg.render(painter)
                 painter.end()
                 category, ico = f.split('/')
                 iconName = '_'.join([category, os.path.splitext(ico)[0]])
                 self.icons[iconName] = pixmap
         zf.close()
示例#32
0
    def testFromData(self):
        picture = QPicture()
        painter = QPainter()
        painter.begin(picture)
        painter.drawEllipse(10, 20, 80, 70)
        painter.end()

        data = picture.data()
        picture2 = QPicture()
        picture2.setData(data)

        self.assertEqual(picture2.data(), picture.data())

        w = MyWidget()
        w._picture = picture2
        w._app = self.app

        QTimer.singleShot(300, w.show)
        self.app.exec_()