コード例 #1
0
    def paintEvent(self, event):
        '''Paint widget.'''
        painter = QtGui.QPainter()
        painter.begin(self)

        try:
            painter.setRenderHint(QtGui.QPainter.Antialiasing)
            area = QtCore.QRect(0, 0,
                                painter.device().width(),
                                painter.device().height())
            center = QtCore.QPointF(area.width() / 2.0, area.height() / 2.0)

            # Draw in a normalised centered box.
            normalisedEdge = 100.0
            normalisedArea = QtCore.QRectF(-(normalisedEdge / 2.0),
                                           -(normalisedEdge / 2.0),
                                           normalisedEdge, normalisedEdge)

            shortestSide = min(area.width(), area.height())
            painter.translate(center)
            painter.scale(shortestSide / normalisedEdge,
                          shortestSide / normalisedEdge)

            # Draw logo.
            svgRenderer = QtSvg.QSvgRenderer()
            svgRenderer.load(self._logo)
            logoMargin = 30.0
            logoArea = normalisedArea.adjusted(logoMargin, logoMargin,
                                               -logoMargin, -logoMargin)
            svgRenderer.render(painter, logoArea)

            # Draw spinner at current spin angle.
            pen = QtGui.QPen()
            penWidth = 5.0
            pen.setWidth(penWidth)

            gradient = QtGui.QConicalGradient(QtCore.QPoint(0, 0),
                                              -self._spinnerAngle)

            gradient.setColorAt(0.95, QtCore.Qt.transparent)
            gradient.setColorAt(0, self._spinnerColor)

            brush = QtGui.QBrush(gradient)
            pen.setBrush(brush)
            painter.setPen(pen)

            spinnerArea = QtCore.QRectF(
                normalisedArea.top() + (penWidth / 2.0),
                normalisedArea.left() + (penWidth / 2.0),
                normalisedArea.width() - penWidth,
                normalisedArea.height() - penWidth)

            painter.drawArc(
                spinnerArea,
                0,  # Start angle.
                360 * 16  # Span angle.
            )

        finally:
            painter.end()
コード例 #2
0
    def paintEvent(self, event):
        '''Override paint event to make round thumbnails.'''
        painter = QtGui.QPainter(self)
        painter.setRenderHints(QtGui.QPainter.Antialiasing, True)

        brush = QtGui.QBrush(self.pixmap())

        painter.setBrush(brush)

        painter.setPen(QtGui.QPen(QtGui.QColor(0, 0, 0, 0)))

        painter.drawEllipse(QtCore.QRectF(0, 0, self.width(), self.height()))
コード例 #3
0
    def loadResource(self, resource):
        '''Update current pixmap using *resource*.'''
        svg_renderer = QtSvg.QSvgRenderer(resource)

        image = QtGui.QImage(self.size, self.size, QtGui.QImage.Format_ARGB32)
        # Set the ARGB to 0 to prevent rendering artifacts.
        image.fill(0x00000000)
        svg_renderer.render(QtGui.QPainter(image),
                            QtCore.QRectF(0, 0, self.size, self.size))

        pixmap = QtGui.QPixmap.fromImage(image)

        self._fillColor(pixmap)
        self._scaleAndSetPixmap(pixmap)
コード例 #4
0
    def paintEvent(self, event):
        '''Paint widget.'''
        painter = QtGui.QPainter()
        painter.begin(self)

        try:
            painter.setRenderHint(QtGui.QPainter.Antialiasing)
            area = QtCore.QRect(
                0, 0, painter.device().width(), painter.device().height()
            )
            center = QtCore.QPointF(
                area.width() / 2.0,
                area.height() / 2.0
            )

            # Draw in a normalised centered box.
            normalisedEdge = 100.0
            normalisedArea = QtCore.QRectF(
                -(normalisedEdge / 2.0), -(normalisedEdge / 2.0),
                normalisedEdge, normalisedEdge
            )

            shortestSide = min(area.width(), area.height())
            painter.translate(center)
            painter.scale(
                shortestSide / normalisedEdge,
                shortestSide / normalisedEdge
            )

            # Draw spinner at current spin angle.
            pen = QtGui.QPen()
            penWidth = 8.0
            pen.setWidth(penWidth)
            pen.setColor(self._spinnerColor)
            pen.setCapStyle(QtCore.Qt.RoundCap)

            gradient = QtGui.QConicalGradient(
                QtCore.QPoint(0, 0),
                -self._spinnerAngle
            )
            gradient.setColorAt(0.95, self._spinnerColor)
            gradient.setColorAt(0, self._spinnerColor)

            brush = QtGui.QBrush(gradient)
            pen.setBrush(brush)
            painter.setPen(pen)

            spinnerArea = QtCore.QRectF(
                normalisedArea.top() + (penWidth / 2.0),
                normalisedArea.left() + (penWidth / 2.0),
                normalisedArea.width() - penWidth,
                normalisedArea.height() - penWidth
            )

            painter.drawArc(
                spinnerArea,
                -self._spinnerAngle * 16,  # Start angle.
                250 * 16  # Span angle.
            )

        finally:
            painter.end()