示例#1
0
    def paintEvent(self, e):
        #define the painter
        painter = QPainter(self)

        #define a brush for the background of the axis area
        brush = QtGui.QBrush()
        brush.setColor(QtGui.QColor('black'))
        brush.setStyle(Qt.SolidPattern)

        #define a rectangle to fill the axis area background
        rect = QtCore.QRect(0, 0,
                            painter.device().width(),
                            painter.device().height())
        painter.fillRect(rect, brush)

        #define width and height for centering
        w = self.width()
        h = self.height()

        title = QtGui.QPen()
        title.setColor(QtGui.QColor('white'))
        painter.setPen(title)
        painter.setOpacity(1)
        font = QtGui.QFont()

        #set up the text labels
        font.setBold(True)
        font.setPointSize(18)
        painter.setFont(font)
        painter.drawText(QRect(0, 0, w, h), Qt.AlignCenter | Qt.AlignCenter,
                         self.plotTitle)
示例#2
0
    def updateFilledCircle(self, s):
        size = s * self.zoom
        pixmap = QPixmap(self.width(), self.height())
        pixmap.fill(Qt.transparent)
        #painter filled ellipse
        p = QPalette()
        painter = QPainter()
        painter.begin(pixmap)
        painter.setRenderHint(QPainter.Antialiasing)
        brush = QBrush(p.link().color())
        painter.setBrush(brush)
        painter.setOpacity(0.4)
        painter.drawEllipse(
            QRect(
                old_div(self.width(), 2) - old_div(size, 2),
                old_div(self.height(), 2) - old_div(size, 2), size, size))
        painter.end()
        #painter ellipse 2
        painter2 = QPainter()
        painter2.begin(pixmap)
        painter2.setRenderHint(QPainter.Antialiasing)
        pen2 = QPen(Qt.green)
        pen2.setWidth(1)
        painter2.setPen(pen2)
        painter2.drawEllipse(
            QRect(
                old_div(self.width(), 2) - old_div(size, 2),
                old_div(self.height(), 2) - old_div(size, 2), size, size))
        painter2.end()

        self.ellipseLabel.setPixmap(QPixmap(pixmap))
        self.lastSize = s
示例#3
0
 def updateFilledCircle(self, s):
     size = s * self.zoom
     pixmap = QPixmap(self.width(), self.height())
     pixmap.fill(Qt.transparent)
     #painter filled ellipse
     p = QPalette()
     painter = QPainter()
     painter.begin(pixmap)
     painter.setRenderHint(QPainter.Antialiasing)
     brush = QBrush(p.link().color())
     painter.setBrush(brush)
     painter.setOpacity(0.4)
     painter.drawEllipse(QRect(old_div(self.width(),2) - old_div(size,2), old_div(self.height(),2) - old_div(size,2), size, size))
     painter.end()
     #painter ellipse 2
     painter2 = QPainter()
     painter2.begin(pixmap)
     painter2.setRenderHint(QPainter.Antialiasing)
     pen2 = QPen(Qt.green)
     pen2.setWidth(1)
     painter2.setPen(pen2)
     painter2.drawEllipse(QRect(old_div(self.width(),2) - old_div(size,2), old_div(self.height(),2) - old_div(size,2), size, size))
     painter2.end()
     
     self.ellipseLabel.setPixmap(QPixmap(pixmap))
     self.lastSize = s
示例#4
0
    def paintEvent(self, event=None):
        painter = QPainter(self)

        painter.setOpacity(0.4)
        painter.setBrush(Qt.white)
        painter.setPen(QPen(Qt.white))
        painter.drawRect(self.rect())
示例#5
0
    def paintEvent(self, event):
        radius = 50
        
        treeSize = QSizeF(2 * radius, 2 * radius)
        bounds = QRectF( (self.width() - treeSize.height()) / 2,
                         (self.height() - treeSize.width()) / 2,
                         treeSize.width(),
                         treeSize.height())

        painter = QPainter(self)

        # draw the shadow
        painter.setBrush(Qt.black)
        painter.setPen(Qt.NoPen)
        painter.setOpacity(0.5)

        xrad = 95
        yrad = self.shadowLength * 20
        rect = QRectF(-xrad, -yrad, xrad, yrad)
        painter.translate(self.width() / 2, self.height() / 2)
        painter.rotate(self.angle)
        painter.translate(xrad/2, yrad/2)
        painter.drawChord(rect, 0, 180*16)
        painter.resetTransform()

        # draw the tree
        painter.setOpacity(1)
        self.tree.render(painter, bounds)

        # draw the compass
        bounds = QRectF( 10, 10, 50, 50)
        self.compass.render(painter, bounds)
示例#6
0
 def paintEvent(self, event):
     _size = self.size() - QSize(2, 2)
     if (_size.isEmpty()):
         return
     origX = (_size.width() - self.mNewSize.width() * self.mScale) / 2 + 0.5
     origY = (_size.height() -
              self.mNewSize.height() * self.mScale) / 2 + 0.5
     oldRect = QRect(self.mOffset, self.mOldSize)
     painter = QPainter(self)
     painter.translate(origX, origY)
     painter.scale(self.mScale, self.mScale)
     pen = QPen(Qt.black)
     pen.setCosmetic(True)
     painter.setPen(pen)
     painter.drawRect(QRect(QPoint(0, 0), self.mNewSize))
     pen.setColor(Qt.white)
     painter.setPen(pen)
     painter.setBrush(Qt.white)
     painter.setOpacity(0.5)
     painter.drawRect(oldRect)
     pen.setColor(Qt.black)
     pen.setStyle(Qt.DashLine)
     painter.setOpacity(1.0)
     painter.setBrush(Qt.NoBrush)
     painter.setPen(pen)
     painter.drawRect(oldRect)
     painter.end()
示例#7
0
    def paintEvent(self, event):
        painter = QPainter(self)
        event.accept()

        if not self.isEnabled():
            painter.save()
            painter.setOpacity(0.2)
            painter.drawPixmap(self.fPixmapRect, self.fPixmapNormal, self.fPixmapRect)
            painter.restore()

        elif self.isChecked() or self.isDown():
            painter.drawPixmap(self.fPixmapRect, self.fPixmapDown, self.fPixmapRect)

        elif self.fIsHovered:
            painter.drawPixmap(self.fPixmapRect, self.fPixmapHover, self.fPixmapRect)

        else:
            painter.drawPixmap(self.fPixmapRect, self.fPixmapNormal, self.fPixmapRect)

        if not self.fTopText:
            return

        painter.save()
        painter.setPen(self.fTopTextColor)
        painter.setBrush(self.fTopTextColor)
        painter.setFont(self.fTopTextFont)
        painter.drawText(QPointF(10, 16), self.fTopText)
        painter.restore()
示例#8
0
    def paintEvent(self, event):
        if self.btn_update:

            qp = QPainter()
            self.iconPix.fill(Qt.transparent)
            qp.begin(self.iconPix)
            self.text.setStyleSheet("#text { background: none; } ")
            self.text.setStyleSheet(
                "#text { background: rgba(155,150,100, 0); text-align: center; border-radius: 5px;} "
            )
            if self.select:
                qp.setOpacity(.1)
                qp.setPen(Qt.NoPen)
                self.text.setStyleSheet(
                    "#text { background: rgba(155,100,255, 0.5); text-align: center; border-radius: 5px;} "
                )
            qp.setOpacity(self.opacity)

            self.drawIcon(event, qp)

            self.icon.setPixmap(self.iconPix)

            qp.end()

            QF = QFont()
            QFM = QFontMetrics(QF)
            bound = QFM.boundingRect(0, 0, 100, 1000,
                                     Qt.TextWordWrap | Qt.AlignCenter,
                                     self.text.text())

            self.text.setFixedHeight(bound.height())
            self.btn_update = False
示例#9
0
 def paintEvent(self, e):
     """ 绘制图标 """
     iconPixmap = self.iconPixmap
     px, py = self._pixPos_list[0]
     painter = QPainter(self)
     painter.setRenderHints(QPainter.Antialiasing
                            | QPainter.SmoothPixmapTransform)
     painter.setPen(Qt.NoPen)
     # 鼠标按下时绘制圆形背景,pressed的优先级比hover的优先级高
     if self.isPressed:
         # brush = QBrush(QColor(162, 162, 162, 120))
         brush = QBrush(QColor(255, 255, 255, 70))
         painter.setBrush(brush)
         painter.drawEllipse(0, 0, self.iconWidth, self.iconHeight)
         iconPixmap = self.iconPixmap.scaled(
             self.iconPixmap.width() - 4,
             self.iconPixmap.height() - 4,
             Qt.KeepAspectRatio,
             Qt.SmoothTransformation,
         )
         px, py = self._pixPos_list[1]
     # 鼠标进入时更换图标透明度
     elif self.isEnter:
         painter.setOpacity(0.5)
     # 绘制图标
     painter.drawPixmap(px, py, iconPixmap.width(), iconPixmap.height(),
                        iconPixmap)
示例#10
0
    def draw_pointer_indicator_r(self, painter: QtGui.QPainter):
        """ 绘制指示器, 样式indicator_r """
        radius = 62
        offset = 8
        painter.save()
        painter.setOpacity(0.6)

        # QPolygon 类提供了一个使用整数精度的点向量,QPoint的集合
        pts = QtGui.QPolygon()
        pts.setPoints(3, -offset, 0, offset, 0, 0, radius)

        painter.rotate(self.start_angle)
        deg_rotate = (360 - self.start_angle - self.end_angle) / (
            self.max_value - self.min_value) * (self.value - self.min_value)
        painter.rotate(deg_rotate)

        color = self.percent_color
        if self.double_percent:
            center = (self.value == (self.max_value - self.min_value) / 2 +
                      self.min_value)
            color = self.border_color if center else self.percent_color

        pen = QtGui.QPen()
        pen.setColor(pen)
        painter.setPen(pen)
        painter.setBrush(color)
        painter.drawConvexPolygon(pts)

        # 增加绘制圆角直线,与之前三角形重叠,形成圆角指针
        pen.setCapStyle(QtCore.Qt.RoundCap)
        pen.setWidth(offset - 1)
        painter.setPen(pen)
        painter.drawLine(0, 0, 0, radius)

        painter.restore()
示例#11
0
    def draw_pointer_indicator(self, painter: QtGui.QPainter):
        """ 绘制指示器, 样式indicator """
        radius = 62
        offset = 8
        painter.save()
        painter.setOpacity(0.8)

        # QPolygon 类提供了一个使用整数精度的点向量,QPoint的集合
        pts = QtGui.QPolygon()
        pts.setPoints(3, -offset, 0, offset, 0, 0, radius)

        painter.rotate(self.start_angle)
        deg_rotate = (360 - self.start_angle - self.end_angle) / (
            self.max_value - self.min_value) * (self.value - self.min_value)
        painter.rotate(deg_rotate)

        color = self.percent_color
        if self.double_percent:
            center = (self.value == (self.max_value - self.min_value) / 2 +
                      self.min_value)
            color = self.border_color if center else self.percent_color

        painter.setPen(color)
        painter.setBrush(color)
        painter.drawConvexPolygon(pts)

        painter.restore()
    def paintEvent(self, event):
        p = QPainter(self)

        if self.scrollEnabled:
            self.buffer.fill(qRgba(0, 0, 0, 0))
            pb = QPainter(self.buffer)
            pb.setPen(p.pen())
            pb.setFont(p.font())

            x = min(-self.scrollPos, 0) + self.leftMargin
            while x < self.width():
                pb.drawStaticText(
                    QPointF(x,
                            (self.height() - self.wholeTextSize.height()) / 2)
                    + QPoint(2, 2), self.staticText)
                x += self.wholeTextSize.width()

            #Apply Alpha Channel
            pb.setCompositionMode(QPainter.CompositionMode_DestinationIn)
            pb.setClipRect(self.width() - 15, 0, 15, self.height())
            pb.drawImage(0, 0, self.alphaChannel)
            pb.setClipRect(0, 0, 15, self.height())
            #initial situation: don't apply alpha channel in the left half of the image at all; apply it more and more until scrollPos gets positive
            if self.scrollPos < 0:
                pb.setOpacity((max(-8, self.scrollPos) + 8) / 8.0)
            pb.drawImage(0, 0, self.alphaChannel)

            p.drawImage(0, 0, self.buffer)
        else:
            x = (self.width() - self.wholeTextSize.width()) / 2
            y = (self.height() - self.wholeTextSize.height()) / 2
            p.drawStaticText(QPointF(x, y), self.staticText)
示例#13
0
    def paintEvent(self, event=None):
        painter = QPainter(self)

        painter.setOpacity(0.7)
        painter.setBrush(Qt.black)
        painter.setPen(QPen(Qt.black))
        painter.drawRect(self.rect())
示例#14
0
 def paintEvent(self, event):
     QWidget.paintEvent(self, event)
     painter = QPainter(self)
     painter.setBrush(QBrush(QColor(Qt.black)))
     painter.setPen(QPen())
     painter.setOpacity(self.value)
     painter.drawRect(self.rect())
示例#15
0
文件: box.py 项目: cybrix-dev/fotobox
    def set_button_image(self, button, filename, opacity=1):
        '''
        - wenn kein Dateiname, dann Knopf verstecken
        - Setze Bild fuer Knopf/Anpassen der Groesse
        - anzeigen
        '''
        if not filename:
            button.hide()
        else:
            button.show()
            button.setText("")

            if opacity < 1:
                orgPix = QPixmap(filename)
                transparent = QPixmap(orgPix.size())
                transparent.fill(Qt.transparent)
                painter = QPainter(transparent)
                painter.setOpacity(opacity)
                painter.drawPixmap(0, 0, orgPix)
                painter.end()
                icon = QIcon(transparent)
            else:
                icon = QIcon(filename)
            button.setIcon(icon)
            self.resize_button_icon(button)
            # 10% vom Rand platz
            button.show()
示例#16
0
    def paintEvent(self, event):
        radius = 50

        treeSize = QSizeF(2 * radius, 2 * radius)
        bounds = QRectF((self.width() - treeSize.height()) / 2,
                        (self.height() - treeSize.width()) / 2,
                        treeSize.width(), treeSize.height())

        painter = QPainter(self)

        # draw the shadow
        painter.setBrush(Qt.black)
        painter.setPen(Qt.NoPen)
        painter.setOpacity(0.5)

        xrad = 95
        yrad = self.shadowLength * 20
        rect = QRectF(-xrad, -yrad, xrad, yrad)
        painter.translate(self.width() / 2, self.height() / 2)
        painter.rotate(self.angle)
        painter.translate(xrad / 2, yrad / 2)
        painter.drawChord(rect, 0, 180 * 16)
        painter.resetTransform()

        # draw the tree
        painter.setOpacity(1)
        self.tree.render(painter, bounds)

        # draw the compass
        bounds = QRectF(10, 10, 50, 50)
        self.compass.render(painter, bounds)
示例#17
0
    def paintEvent(self, event=None):
        painter = QPainter(self)

        painter.setOpacity(0.1)  ######### j: replace number with var
        painter.setBrush(Qt.white)
        painter.setPen(QPen(Qt.white))
        painter.drawRect(self.rect())
示例#18
0
    def paint(self,
              painter: QtGui.QPainter,
              option: QtWidgets.QStyleOptionGraphicsItem,
              widget: Optional[QtWidgets.QWidget] = None) -> None:
        size = min(self.__size.width(), self.__size.height())
        size = int(size - 0.4 * max(0, size - 50))

        if size < 10:
            return

        pixmap_size = QtCore.QSize(size, size)
        if self.__pixmap is None or self.__pixmap.size() != pixmap_size:
            self.__pixmap = QtGui.QPixmap(pixmap_size)
            self.__pixmap.fill(QtGui.QColor(0, 0, 0, 0))
            pixmap_painter = QtGui.QPainter(self.__pixmap)
            try:
                self.__icon.render(pixmap_painter,
                                   QtCore.QRectF(0, 0, size, size))
            finally:
                pixmap_painter.end()

        painter.setOpacity(min(0.8, max(0.2, 0.8 - (size - 30) / 100)))
        painter.drawPixmap(int((self.__size.width() - size) / 2),
                           int((self.__size.height() - size) / 2),
                           self.__pixmap)
示例#19
0
 def fillOpacityModel(self):
     self.brushOpacityModel.clear()
     self.brushFlowModel.clear()
     for s in range(len(self.opacityList)):
         # we're gonna itterate over our list, and make a new item for each entry.
         item = QStandardItem()
         item.setCheckable(False)
         item.setEditable(False)
         item.setDragEnabled(False)
         item.setText(str(self.opacityList[s]) + " %")
         brushImage = QPixmap(64, 64)
         img = QImage(64, 64, QImage.Format_RGBA8888)
         circlePainter = QPainter()
         img.fill(Qt.transparent)
         circlePainter.begin(img)
         brush = QBrush(Qt.SolidPattern)
         brush.setColor(self.brushSizeTableView.palette().color(
             QPalette.Text))
         circlePainter.setBrush(brush)
         circlePainter.setPen(QPen(QBrush(Qt.transparent), 0))
         circlePainter.setOpacity(float(self.opacityList[s]) / 100.0)
         circlePainter.drawEllipse(QPointF(32, 32), 32, 32)
         circlePainter.end()
         brushImage = QPixmap.fromImage(img)
         item.setIcon(QIcon(brushImage))
         # the flow and opacity models will use virtually the same items, but Qt would like us to make sure we understand
         # these are not really the same items, so hence the clone.
         itemFlow = item.clone()
         self.brushOpacityModel.appendRow(item)
         self.brushFlowModel.appendRow(itemFlow)
     self.brushOpacityTableView.setModel(self.brushOpacityModel)
     self.brushFlowTableView.setModel(self.brushFlowModel)
示例#20
0
    def draw(self, painter: QPainter):
        assert self.crop, 'crop must be set'

        # Compute painter regions for the crop and the blur
        all_region = QRegion(painter.viewport())
        crop_region = QRegion(self.crop)
        blur_region = all_region.subtracted(crop_region)

        # Let the QGraphicsBlurEffect only paint in blur_region
        painter.setClipRegion(blur_region)

        # Fill with black and set opacity so that the blurred region is drawn darker
        if self.BLUR_DARKEN > 0.0:
            painter.fillRect(painter.viewport(), Qt.black)
            painter.setOpacity(1 - self.BLUR_DARKEN)

        # Draw the blur effect
        super().draw(painter)

        # Restore clipping and opacity
        painter.setClipping(False)
        painter.setOpacity(1.0)

        # Get the source pixmap
        pixmap, offset = self.sourcePixmap(Qt.DeviceCoordinates, QGraphicsEffect.NoPad)
        painter.setWorldTransform(QTransform())

        # Get the source by adding the offset to the crop location
        source = self.crop
        if self.CROP_OFFSET_ENABLED:
            source = source.translated(self.CROP_OFFSET)
        painter.drawPixmap(self.crop.topLeft() + offset, pixmap, source)
示例#21
0
    def flood(self, e):
        image = self.pixmap().toImage()
        b = image.bits()
        b.setsize(512 * 512 * 4)
        arr = np.frombuffer(b, np.uint8).reshape((512, 512, 4))
        arr = arr.astype(np.int32)
        arr = np.flip(arr, axis=2)

        i = self.color_index + 1
        arr_test = arr[:,:,i]-((arr[:,:,1]+ arr[:,:,2]+ arr[:,:,3])/3)
        #arr test is not greyscale
        
        i = 2 - self.color_index
        #painted_arr is BGRA
        painted_arr = np.zeros_like(arr,dtype=np.uint8)
        painted_arr[:,:,i][arr_test!=0] = 255
        #this makes the drawn images the same as pen color

        painted_arr[:,:,i] = 255*flood(painted_arr[:,:,i],(e.y(),e.x()))
        #sets alpha from ith channel
        painted_arr[:,:,3] = painted_arr[:,:,i]

        #BGRA
        qi = QImage(painted_arr.data, painted_arr.shape[1], painted_arr.shape[0], 4*painted_arr.shape[1], QImage.Format_ARGB32_Premultiplied)
        pixmap = QPixmap(qi)
        
        painter = QPainter(self.pixmap())
        painter.setOpacity(0.5)

        painter.drawPixmap(0,0,pixmap)
        painter.end()
        self.update()
        
        #self.array saves RGB values
        self.array += np.flip(painted_arr[:,:,:3], axis=2)
示例#22
0
文件: HUD.py 项目: ozzegovic/DRS
    def initUI(self):
        self.setStyleSheet("background: transparent")
        self.scene.setSceneRect(0, 0, 1000, 223)

        tempImg = QPixmap('PNG/9c49087c09fd07a10ae3887a7825f389.jpg')
        tempImg = tempImg.scaled(self.scene.width(), self.scene.height())

        new_pix = QPixmap(tempImg.size())
        new_pix.fill(Qt.darkGray)
        painter = QPainter(new_pix)
        painter.setOpacity(0.35)
        painter.drawPixmap(QPoint(), tempImg)
        painter.end()

        self.graphicsPixmapItem = QGraphicsPixmapItem(new_pix)
        self.scene.addItem(self.graphicsPixmapItem)
        self.label.setStyleSheet(
            'color: white; font-weight: bold; background: transparent;')

        self.hbox = QHBoxLayout()

        self.hbox.addWidget(self.label)
        self.scene.addWidget(self.label)

        self.setFrameShape(QFrame.NoFrame)
        self.setLayout(self.hbox)
        self.setScene(self.scene)
示例#23
0
    def paintEvent(self, event):
        painter = QPainter(self)
        event.accept()

        if not self.isEnabled():
            painter.save()
            painter.setOpacity(0.2)
            painter.drawPixmap(self.fPixmapRect, self.fPixmapNormal,
                               self.fPixmapRect)
            painter.restore()

        elif self.isChecked() or self.isDown():
            painter.drawPixmap(self.fPixmapRect, self.fPixmapDown,
                               self.fPixmapRect)

        elif self.fIsHovered:
            painter.drawPixmap(self.fPixmapRect, self.fPixmapHover,
                               self.fPixmapRect)

        else:
            painter.drawPixmap(self.fPixmapRect, self.fPixmapNormal,
                               self.fPixmapRect)

        if not self.fTopText:
            return

        painter.save()
        painter.setPen(self.fTopTextColor)
        painter.setBrush(self.fTopTextColor)
        painter.setFont(self.fTopTextFont)
        painter.drawText(QPointF(10, 16), self.fTopText)
        painter.restore()
示例#24
0
 def paintEvent(self, e):
     """ 绘制背景 """
     iconPixmap = self.iconPixmap
     px, py = self._pixPos_list[0]
     painter = QPainter(self)
     painter.setRenderHints(QPainter.Antialiasing
                            | QPainter.SmoothPixmapTransform)
     painter.setPen(Qt.NoPen)
     if self.isPressed:
         if not self.isSelected:
             brush = QBrush(QColor(162, 162, 162, 120))
             pen = Qt.NoPen
         else:
             brush = QBrush(QColor(110, 110, 110, 100))
             pen = QPen(QColor(255, 255, 255, 160))
             pen.setWidthF(1.5)
         # 绘制圆环和背景色
         self.__drawCircle(painter, pen, brush)
         # 更新图标大小和位置
         iconPixmap = self.iconPixmap.scaled(self.iconPixmap.width() - 4,
                                             self.iconPixmap.height() - 4,
                                             Qt.KeepAspectRatio,
                                             Qt.SmoothTransformation)
         px, py = self._pixPos_list[1]
     else:
         if self.isSelected:
             pen = QPen(QColor(255, 255, 255, 100))
             pen.setWidthF(1.4)
             self.__drawCircle(painter, pen, QBrush(QColor(0, 0, 0, 60)))
         # 鼠标进入时更换图标透明度
         elif self.isEnter:
             painter.setOpacity(0.5)
     # 绘制图标
     painter.drawPixmap(px, py, iconPixmap.width(), iconPixmap.height(),
                        iconPixmap)
示例#25
0
 def paintEvent(self, event):
     _size = self.size() - QSize(2, 2)
     if (_size.isEmpty()):
         return
     origX = (_size.width() - self.mNewSize.width() * self.mScale) / 2 + 0.5
     origY = (_size.height() - self.mNewSize.height() * self.mScale) / 2 + 0.5
     oldRect = QRect(self.mOffset, self.mOldSize)
     painter = QPainter(self)
     painter.translate(origX, origY)
     painter.scale(self.mScale, self.mScale)
     pen = QPen(Qt.black)
     pen.setCosmetic(True)
     painter.setPen(pen)
     painter.drawRect(QRect(QPoint(0, 0), self.mNewSize))
     pen.setColor(Qt.white)
     painter.setPen(pen)
     painter.setBrush(Qt.white)
     painter.setOpacity(0.5)
     painter.drawRect(oldRect)
     pen.setColor(Qt.black)
     pen.setStyle(Qt.DashLine)
     painter.setOpacity(1.0)
     painter.setBrush(Qt.NoBrush)
     painter.setPen(pen)
     painter.drawRect(oldRect)
     painter.end()
示例#26
0
 def paintEvent(self, event):
     a = self.height() / 2 * 0.4
     painter = QPainter(self)
     painter.setOpacity(self.opacity)
     painter.setRenderHint(QPainter.Antialiasing, True)
     painter.setRenderHint(QPainter.SmoothPixmapTransform, True)
     painter.setPen(Qt.NoPen)
     painter.save()
     path = QPainterPath()
     brush = QBrush(self.color1)
     painter.setBrush(brush)
     path.moveTo(self.p1)
     rect = QRectF(self.p1.x() - a, 0, a * 2, self.height())
     path.arcTo(rect, 90, 360)
     painter.drawPath(path)
     painter.restore()
     if self.p1 == self.p2:
         return
     path = QPainterPath()
     brush = QBrush(self.color2)
     painter.setBrush(brush)
     path.moveTo(self.p2)
     rect = QRectF(self.p2.x() - a, 0, a * 2, self.height())
     path.arcTo(rect, 90, 360)
     painter.drawPath(path)
示例#27
0
    def paintEvent(self, event):

        painter = QPainter()
        painter.begin(self)
        painter.setOpacity(self.pixmap_opacity)
        painter.drawPixmap(0, 0, self.old_pixmap)
        painter.end()
示例#28
0
    def drawOverlayImage(self, rect):

        if self.pixmapitem is not None:

            W = self.pixmap.width()
            H = self.pixmap.height()

            self.HIGHLIGHT_RECT_WIDTH = rect.width() * W
            self.HIGHLIGHT_RECT_HEIGHT = rect.height() * H
            self.HIGHLIGHT_RECT_POSX = rect.left() * W
            self.HIGHLIGHT_RECT_POSY = rect.top() * H
            self.overlay_image = QImage(self.HIGHLIGHT_RECT_WIDTH,
                                        self.HIGHLIGHT_RECT_HEIGHT,
                                        QImage.Format_ARGB32)
            self.overlay_image.fill(self.HIGHLIGHT_COLOR)

            if self.overlay_image.width() > 1:
                pxmap = self.pixmap.copy()
                p = QPainter()
                p.begin(pxmap)
                p.setOpacity(self.opacity)
                p.drawImage(self.HIGHLIGHT_RECT_POSX, self.HIGHLIGHT_RECT_POSY,
                            self.overlay_image)
                p.end()

                self.pixmapitem.setPixmap(pxmap)
    def __init__(self):
        """
        init
        """
        super(PseudocodeHighlightAnimation, self).__init__()

        # empty init
        self.table_pseudocode = QTableWidget(self)
        self.table_pseudocode.setColumnCount(1)
        self.table_pseudocode.horizontalHeader().hide()
        self.table_pseudocode.verticalHeader().hide()
        self.table_pseudocode.setFixedWidth(200)
        self.table_pseudocode.setColumnWidth(0, 200)
        self.table_pseudocode.setShowGrid(False)

        # transparent label
        self.label_highlight = QLabel('', self)
        self.label_highlight_pixmap = QPixmap(200, 25)
        self.label_highlight_pixmap.fill(Qt.yellow)
        self.label_highlight.setPixmap(self.label_highlight_pixmap)
        self.label_highlight_trasparent_pixmap = QPixmap(
            self.label_highlight_pixmap.size())
        self.label_highlight_trasparent_pixmap.fill(Qt.transparent)
        #   make it transparent (magic)
        painter = QPainter(self.label_highlight_trasparent_pixmap)
        painter.setOpacity(0.5)
        painter.drawPixmap(QPoint(), self.label_highlight_pixmap)
        painter.end()
        self.label_highlight.setPixmap(self.label_highlight_trasparent_pixmap)

        # actual animation
        self.y = 0
        self.label_highlight_animation = QPropertyAnimation(
            self.label_highlight, b'pos')
        self.label_highlight_animation.setDuration(100)
示例#30
0
 def drawPixmap(self):
     painter = QPainter()
     painter.begin(self.map)
     painter.setOpacity(0.20)
     painter.setPen(QColor(0, 0, 0))
     painter.setBrush(QColor(0, 0, 0))
     for i in range(len(self.df)):
         self.drawPoint(painter, 2, self.df.iloc[i, 2], self.df.iloc[i, 3])
示例#31
0
 def drawBackground(self, painter: QtGui.QPainter,
                    rect: QtCore.QRectF) -> None:
     ret = super(WGraphicsScene, self).drawBackground(painter, rect)
     painter.setOpacity(0.2)
     #        axis = [QtCore.QLineF(self.sceneRect().x(), 0, self.sceneRect().width(), 0),
     #                QtCore.QLineF(0, self.sceneRect().y(), 0, self.sceneRect().height())]
     #        painter.drawLines(axis)
     return ret
示例#32
0
 def on_change(self):
     new_pix = QPixmap(self.pixmap.size())
     new_pix.fill(QtCore.Qt.transparent)
     painter = QPainter(new_pix)
     painter.setOpacity(self.opacity.value() * 0.01)
     painter.drawPixmap(QtCore.QPoint(), self.pixmap)
     painter.end()
     self.image.setPixmap(new_pix)
示例#33
0
    def render(self, size):
        image = QImage(size, QImage.Format_ARGB32_Premultiplied)
        if (self.mIncludeBackgroundColor):
            if (self.mMap.backgroundColor().isValid()):
                image.fill(self.mMap.backgroundColor())
            else:
                image.fill(Qt.gray)
        else :
            image.fill(Qt.transparent)
        
        mapSize = self.mRenderer.mapSize()
        margins = self.mRenderer.map().drawMargins()
        mapSize.setWidth(mapSize.width() + margins.left() + margins.right())
        mapSize.setHeight(mapSize.height() + margins.top() + margins.bottom())
        scale = min(size.width() / mapSize.width(), size.height() / mapSize.height())
        scaledSize = mapSize * scale
        painter = QPainter(image)
        # Center the thumbnail in the requested size
        painter.translate((size.width() - scaledSize.width()) / 2,
                          (size.height() - scaledSize.height()) / 2)
        # Scale the map and translate it to adjust for its margins
        painter.scale(scale, scale)
        painter.translate(margins.left() + (size.width() - scaledSize.width()) / 2,
                          margins.top() + (size.height() - scaledSize.height()) / 2)
        if (smoothTransform(scale)):
            painter.setRenderHints(QPainter.SmoothPixmapTransform)
        self.mRenderer.setPainterScale(scale)
        for layer in self.mMap.layers():
            if (self.mVisibleLayersOnly and not layer.isVisible()):
                continue
            painter.setOpacity(layer.opacity())
            tileLayer = dynamic_cast(layer, TileLayer)
            objGroup = dynamic_cast(layer, ObjectGroup)
            imageLayer = dynamic_cast(layer, ImageLayer)
            if (tileLayer):
                self.mRenderer.drawTileLayer(painter, tileLayer)
            elif (objGroup):
                objects = objGroup.objects()
                if (objGroup.drawOrder() == ObjectGroup.TopDownOrder):
                    objects = QList(sorted(objects, key=lambda x:x.y(), reverse=True))
                for object in objects:
                    if (object.isVisible()):
                        if object.rotation() != 0.0:
                            origin = self.mRenderer.pixelToScreenCoords(object.position())
                            painter.save()
                            painter.translate(origin)
                            painter.rotate(object.rotation())
                            painter.translate(-origin)
                        
                        color = MapObjectItem.objectColor(object)
                        self.mRenderer.drawMapObject(painter, object, color)
                        if (object.rotation() != 0):
                            painter.restore()

            elif (imageLayer):
                self.mRenderer.drawImageLayer(painter, imageLayer)

        return image
示例#34
0
    def _blendTile(self, stack_id, tile_nr):
        """
        Blend all of the QImage layers of the patch
        specified by (stack_id, tile_nr) into a single QImage.
        """
        qimg = None
        p = None
        for i, (visible, layerOpacity,
                layerImageSource) in enumerate(reversed(self._sims)):
            image_type = layerImageSource.image_type()
            if issubclass(image_type, QGraphicsItem):
                with self._cache:
                    patch = self._cache.layer(stack_id, layerImageSource,
                                              tile_nr)
                if patch is not None:
                    assert isinstance(patch, image_type), \
                        "This ImageSource is producing a type of image that is not consistent with it's declared image_type()"
                    # This is a QGraphicsItem, so we don't blend it into the final tile.
                    # (The ImageScene will just draw it on top of everything.)
                    # But this is a convenient place to update the opacity/visible state.
                    if patch.opacity() != layerOpacity or patch.isVisible(
                    ) != visible:
                        patch.setOpacity(layerOpacity)
                        patch.setVisible(visible)
                    patch.setZValue(
                        i
                    )  # The sims ("stacked image sources") are ordered from
                    # top-to-bottom (see imagepump.py), but in Qt,
                    # higher Z-values are shown on top.
                    # Note that the current loop is iterating in reverse order.
                continue

            # No need to fetch non-visible image tiles.
            if not visible or layerOpacity == 0.0:
                continue

            with self._cache:
                patch = self._cache.layer(stack_id, layerImageSource, tile_nr)

            # patch might be a QGraphicsItem instead of QImage,
            # in which case it is handled separately,
            # not composited into the tile.

            if patch is not None:
                assert isinstance(patch, QImage), \
                    "Unknown tile layer type: {}. Expected QImage or QGraphicsItem".format(type(patch))
                if qimg is None:
                    qimg = QImage(self.tiling.imageRects[tile_nr].size(),
                                  QImage.Format_ARGB32_Premultiplied)
                    qimg.fill(0xffffffff)  # Use a hex constant instead.
                    p = QPainter(qimg)
                p.setOpacity(layerOpacity)
                p.drawImage(0, 0, patch)

        if p is not None:
            p.end()

        return qimg
示例#35
0
    def paintTab(self, painter: QPainter, index: int):
        if not self.isValidIndex(index):
            return
        painter.save()

        tab = self._tabs[index]
        rect = self._tabRect(index)
        selected = index == self._currentIndex
        enabled = self._enabled and tab.enabled

        if selected:
            painter.fillRect(rect, FancyToolButtonSelectedColor)

        tabText = tab.text
        tabTextRect = QRect(rect)
        drawIcon = rect.height() > 36
        tabIconRect = QRect(rect)

        tabTextRect.translate(0, -2 if drawIcon else 1)
        boldFont = QFont(painter.font())
        boldFont.setPointSizeF(SIDEBAR_FONT_SIZE)
        boldFont.setBold(True)
        painter.setFont(boldFont)
        #painter.setPen(QColor(255, 255, 255, 160) if selected else QColor(0, 0, 0, 110))
        textFlags = Qt.AlignCenter | (Qt.AlignBottom if drawIcon else
                                      Qt.AlignVCenter) | Qt.TextWordWrap

        fader = tab.fader
        if fader > 0 and not selected and enabled:
            painter.save()
            painter.setOpacity(fader)
            painter.fillRect(rect, FancyToolButtonHoverColor)
            painter.restore()

        if not enabled:
            painter.setOpacity(0.7)

        if drawIcon:
            textHeight = (painter.fontMetrics().boundingRect(
                QRect(0, 0, self.width(), self.height()), Qt.TextWordWrap,
                tabText).height())
            tabIconRect.adjust(0, 4, 0, -textHeight - 4)
            iconMode = (QIcon.Active if selected else
                        QIcon.Normal) if enabled else QIcon.Disabled
            iconRect = QRect(0, 0, MODEBAR_ICON_SIZE, MODEBAR_ICON_SIZE)
            iconRect.moveCenter(tabIconRect.center())
            iconRect = iconRect.intersected(tabIconRect)
            drawIconWithShadow(tab.icon, iconRect, painter, iconMode)

        if enabled:
            penColor = FancyTabWidgetEnabledSelectedTextColor if selected else FancyTabWidgetEnabledUnselectedTextColor
        else:
            penColor = FancyTabWidgetDisabledSelectedTextColor if selected else FancyTabWidgetDisabledUnselectedTextColor
        painter.setPen(penColor)
        painter.translate(0, -1)
        painter.drawText(tabTextRect, textFlags, tabText)

        painter.restore()
示例#36
0
 def paintEvent(self, event):
     QWidget.paintEvent(self, event)
     width, height = self.width(), self.height()
     polygon = QPolygon()
     for i, rate in enumerate(self.loads):
         x = width - i * self.pointDistance
         y = height - rate * height
         if x < self.boxWidth:
             break
         polygon.append(QPoint(x, y))
     painter = QPainter(self)
     pen = QPen()
     pen.setColor(Qt.darkGreen)
     painter.setPen(pen)
     painter.setRenderHint(QPainter.Antialiasing, True)
     #画网格
     painter.setOpacity(0.5)
     gridSize = self.pointDistance * 4
     deltaX = (width - self.boxWidth) % gridSize + self.boxWidth
     deltaY = height % gridSize
     for i in range(int(width / gridSize)):
         x = deltaX + gridSize * i
         painter.drawLine(x, 0, x, height)
     for j in range(int(height / gridSize)):
         y = j * gridSize + deltaY
         painter.drawLine(self.boxWidth, y, width, y)
     #画折线
     pen.setColor(Qt.darkCyan)
     pen.setWidth(2)
     painter.setPen(pen)
     painter.setOpacity(1)
     painter.drawPolyline(polygon)
     #画展示框
     if len(self.loads) > 0:
         rate = self.loads[0]
     else:
         rate = 1.0
     rect1 = QRect(4, height * 0.05, self.boxWidth - 9, height * 0.7)
     rect2 = QRect(4, height * 0.8, self.boxWidth - 9, height * 0.2)
     centerX = int(rect1.width() / 2) + 1
     pen.setWidth(1)
     for i in range(rect1.height()):
         if i % 4 == 0:
             continue
         if (rect1.height() - i) / rect1.height() > rate:
             pen.setColor(Qt.darkGreen)
         else:
             pen.setColor(Qt.green)
         painter.setPen(pen)
         for j in range(rect1.width()):
             if centerX - 1 <= j <= centerX + 1:
                 continue
             painter.drawPoint(rect1.x() + j, rect1.y() + i)
     pen.setColor(Qt.black)
     painter.setPen(pen)
     painter.drawText(rect2, Qt.AlignHCenter | Qt.AlignVCenter, str(int(rate * 100)) + "%")
示例#37
0
文件: cards.py 项目: jasujm/bridge
 def paintEvent(self, event):
     """Paint cards"""
     painter = QPainter()
     painter.begin(self)
     for n, (card, rect, image) in enumerate(self._cards):
         if self._allowed_cards and card not in self._allowed_cards:
             painter.setOpacity(0.8)
         else:
             painter.setOpacity(1)
         _draw_image(painter, rect, image, n == self._selected_card_n)
     painter.end()
示例#38
0
    def _blendTile(self, stack_id, tile_nr):
        """
        Blend all of the QImage layers of the patch
        specified by (stack_id, tile_nr) into a single QImage.
        """
        qimg = None
        p = None
        for i, (visible, layerOpacity, layerImageSource) in enumerate(reversed(self._sims)):
            image_type = layerImageSource.image_type()
            if issubclass(image_type, QGraphicsItem):
                with self._cache:
                    patch = self._cache.layer(stack_id, layerImageSource, tile_nr)
                if patch is not None:
                    assert isinstance(
                        patch, image_type
                    ), "This ImageSource is producing a type of image that is not consistent with it's declared image_type()"
                    # This is a QGraphicsItem, so we don't blend it into the final tile.
                    # (The ImageScene will just draw it on top of everything.)
                    # But this is a convenient place to update the opacity/visible state.
                    if patch.opacity() != layerOpacity or patch.isVisible() != visible:
                        patch.setOpacity(layerOpacity)
                        patch.setVisible(visible)
                    patch.setZValue(i)  # The sims ("stacked image sources") are ordered from
                    # top-to-bottom (see imagepump.py), but in Qt,
                    # higher Z-values are shown on top.
                    # Note that the current loop is iterating in reverse order.
                continue

            # No need to fetch non-visible image tiles.
            if not visible or layerOpacity == 0.0:
                continue

            with self._cache:
                patch = self._cache.layer(stack_id, layerImageSource, tile_nr)

            # patch might be a QGraphicsItem instead of QImage,
            # in which case it is handled separately,
            # not composited into the tile.

            if patch is not None:
                assert isinstance(
                    patch, QImage
                ), "Unknown tile layer type: {}. Expected QImage or QGraphicsItem".format(type(patch))
                if qimg is None:
                    qimg = QImage(self.tiling.imageRects[tile_nr].size(), QImage.Format_ARGB32_Premultiplied)
                    qimg.fill(0xFFFFFFFF)  # Use a hex constant instead.
                    p = QPainter(qimg)
                p.setOpacity(layerOpacity)
                p.drawImage(0, 0, patch)

        if p is not None:
            p.end()

        return qimg
示例#39
0
 def _dialog_paintEvent(self, d, event):
     QDialog.paintEvent(d, event)
     pen = QPen()
     pen.setWidth(2)
     pen.setColor(QColor(200, 200, 200))
     rect = d.rect()
     rect = rect.adjusted(0, 0, -1, -1)
     painter = QPainter(d)
     painter.setRenderHint(QPainter.Antialiasing, True)
     painter.setPen(pen)
     painter.setOpacity(0.8)
     painter.setBrush(QBrush(QColor(Qt.white)))
     painter.drawRoundedRect(rect, 15, 15)
示例#40
0
 def paintEvent(self, event):
     painter = QPainter(self)
     painter.setBrush(self.brush)
     if self.opacity is None or self.parent().vanishing:
         painter.setOpacity(self.parent().opacity / 255)
     else:
         painter.setOpacity(self.opacity / 255)
     pen = QPen(QColor(100, 100, 100, 150))
     pen.setWidth(10)
     painter.setPen(pen)
     painter.drawPath(self.path)
     painter.setPen(QColor(0, 0, 0))
     painter.drawText(self.path.controlPointRect(), Qt.AlignCenter, self.name)
示例#41
0
def shaded(pixmap, opacity=0.25):
    """
    Constructs a copy of the given pixmap using the specified opacity.
    :type pixmap: QPixmap
    :type opacity: T <= int | float
    :rtype: QPixmap
    """
    o = QPixmap(pixmap.size())
    o.fill(Qt.transparent)
    p = QPainter(o)
    p.setOpacity(clamp(opacity, 0.0, 1.0))
    p.drawPixmap(0, 0, pixmap)
    p.end()
    return o
示例#42
0
    def paint(self, painter: QPainter) -> None:
        self.paint_text_items(painter)
        self.paint_thumbnail(painter)

        if self.hovering and self.animation_timer is None:
            if not self.fileinfo.isdir() and not self.fileinfo.is_archive():
                painter.setCompositionMode(QPainter.CompositionMode_Overlay)
                painter.setOpacity(0.75)
                self.paint_thumbnail(painter)
                painter.setOpacity(1.0)
                painter.setCompositionMode(QPainter.CompositionMode_SourceOver)

        if self.level_of_detail > 1:
            self.paint_metadata(painter)
            self.paint_overlay(painter)
示例#43
0
    def paint_metadata(self, painter: QPainter) -> None:
        font = self.style.font
        fm = self.style.fm
        painter.setFont(font)

        if self.new:
            painter.drawPixmap(QRect(2, 2, 24, 24),
                               self.style.shared_pixmaps.new)

        if "type" in self.fileinfo.metadata() and self.fileinfo.metadata()["type"] == "error":
            painter.drawPixmap(QRect(2, 2, 24, 24),
                               self.style.shared_pixmaps.error)

        top_left_text, top_right_text, bottom_left_text, bottom_right = self.make_text()

        if top_left_text:
            w = fm.width(top_left_text)
            painter.setPen(Qt.NoPen)
            painter.setBrush(QColor(255, 255, 255, 160))
            painter.drawRect(0, 0, w + 4, 16)
            painter.setPen(QColor(0, 0, 0))
            painter.drawText(2, 12, top_left_text)

        if top_right_text:
            w = fm.width(top_right_text)
            painter.setPen(Qt.NoPen)
            painter.setBrush(QColor(255, 255, 255, 160))
            painter.drawRect(self.thumbnail_rect.width() - w - 4, 0, w + 4, 16)
            painter.setPen(QColor(0, 0, 0))
            painter.drawText(self.thumbnail_rect.width() - w - 2, 12, top_right_text)

        if bottom_left_text:
            w = fm.width(bottom_left_text)
            painter.setPen(Qt.NoPen)
            painter.setBrush(QColor(255, 255, 255, 160))
            painter.drawRect(0, self.thumbnail_rect.height() - 16, w + 4, 16)
            painter.setPen(QColor(0, 0, 0))
            painter.drawText(2, self.thumbnail_rect.height() - 4, bottom_left_text)

        if self.fileinfo.is_video():
            painter.setOpacity(0.5)
            # painter.setCompositionMode(QPainter.CompositionMode_Plus)
            painter.drawPixmap(QRect(self.thumbnail_rect.width() - 24 - 2,
                                     self.thumbnail_rect.height() - 24 - 2,
                                     24, 24),
                               self.style.shared_pixmaps.video)
            painter.setOpacity(1.0)
        elif self.fileinfo.is_image():
            painter.setOpacity(0.5)
            # painter.setCompositionMode(QPainter.CompositionMode_Plus)
            painter.drawPixmap(QRect(self.thumbnail_rect.width() - 24 - 2,
                                     self.thumbnail_rect.height() - 24 - 2,
                                     24, 24),
                               self.style.shared_pixmaps.image)
            painter.setOpacity(1.0)
示例#44
0
 def paintEvent(self, event):
     QWidget.paintEvent(self, event)
     pen = QPen()
     pen.setWidth(2)
     pen.setColor(QColor(200, 200, 200))
     rect = self.rect()
     rect = rect.adjusted(0, 0, -1, -1)
     painter = QPainter(self)
     painter.setRenderHint(QPainter.Antialiasing, True)
     painter.setPen(pen)
     painter.setOpacity(0.5)
     painter.setBrush(QBrush(QColor(Qt.white)))
     painter.drawRoundedRect(rect, 15, 15)
     painter.setOpacity(1)
     pen.setColor(Qt.black)
     painter.setPen(pen)
     text = self.name + "\n" + self.description
     painter.drawText(self.rect(), Qt.AlignHCenter | Qt.AlignVCenter, text)
示例#45
0
    def paintEvent(self, event):
        QFrame.paintEvent(self, event)
        factorForWidth = self.width() / 40
        factorForHeight = self.height() / 30
        row = 1
        column = 1

        painter = QPainter(self)
        painter.setOpacity(0.9)
        pen = QPen()
        pen.setColor(Qt.white)
        painter.setPen(pen)
        while factorForWidth * column < self.width():
            painter.drawLine(factorForWidth * column, 0, factorForWidth * column, self.height())
            column += 1
        while factorForHeight * row < self.height():
            painter.drawLine(0, factorForHeight * row, self.width(), factorForHeight * row)
            row += 1
示例#46
0
 def paintEvent(self, event):
     """Paint transparent background,animated pattern,background text."""
     painter, font = QPainter(self), self.font()
     painter.fillRect(event.rect(), Qt.transparent)  # fill transparent rect
     painter.setPen(QPen(QColor(randint(9, 255), randint(9, 255), 255)))
     painter.rotate(30)  # Rotate painter ~30 Degree
     font.setBold(True)  # Set painter Font for text
     font.setPixelSize(100)
     painter.setFont(font)
     painter.drawText(99, 99, "Python Qt")  # draw the background text
     painter.rotate(-30)  # Rotate -30 the QPen back
     painter.setPen(Qt.NoPen)  # set the pen to no pen
     painter.setBrush(QColor("black"))  # Background Color
     painter.setOpacity(0.9)  # Background Opacity
     painter.drawRoundedRect(self.rect(), 25, 25)  # Back Rounded Borders
     for i in range(2048):  # animated random dots background pattern
         x = randint(10, self.size().width() - 10)
         y = randint(10, self.size().height() - 10)
         painter.setPen(QPen(QColor(randint(9, 255), randint(9, 255), 255)))
         painter.drawPoint(x, y)
     QMainWindow.paintEvent(self, event)
示例#47
0
    def render(self, painter: QPainter) -> None:
        if self._item_style == FileItemStyle.SMALLICON:
            self.paint_smallicon_view(painter)
        elif self._item_style == FileItemStyle.DETAIL:
            self.paint_detail_view(painter)
        else:
            self.paint(painter)

        if self.is_selected:
            painter.save()
            painter.setCompositionMode(QPainter.CompositionMode_SourceOver)
            painter.setOpacity(0.5)
            painter.fillRect(self.tile_rect, QColor(127, 192, 255))
            painter.setCompositionMode(QPainter.CompositionMode_SourceOver)
            painter.setOpacity(1.0)
            painter.setPen(QColor(96, 127, 255))
            painter.setBrush(Qt.NoBrush)
            painter.drawRect(self.tile_rect)
            painter.restore()

        if self.is_cursor:
            painter.setOpacity(1.0)
            painter.setPen(QColor(0, 0, 0))
            painter.setBrush(QColor(255, 255, 255, 96))
            painter.drawRect(self.tile_rect)
示例#48
0
    def paint_overlay(self, painter: QPainter) -> None:
        if self.fileinfo.have_access() is False:
            painter.setOpacity(0.5)
            m = int(self.thumbnail_rect.width() * 0.125)
            painter.drawPixmap(self.thumbnail_rect.marginsRemoved(QMargins(m, m, m, m)),
                               self.style.shared_pixmaps.locked)
            painter.setOpacity(1.0)

        thumbnail = self.thumbnail
        if thumbnail.status == ThumbnailStatus.LOADING or thumbnail.status == ThumbnailStatus.INITIAL:
            painter.setOpacity(0.5)
            painter.drawPixmap(QRect(self.thumbnail_rect.width() - 32,
                                     2,
                                     32, 32),
                               self.style.shared_pixmaps.loading)
            painter.setOpacity(1.0)
        elif thumbnail.status == ThumbnailStatus.THUMBNAIL_ERROR:
            self.paint_icon(painter, self.style.shared_icons.image_error)
示例#49
0
    def render(self, mapFileName, imageFileName):
        map = None
        renderer = None
        reader = MapReader()
        map = reader.readMap(mapFileName)
        if (not map):
            qWarning("Error while reading " + mapFileName + ":\n" + reader.errorString())
            return 1

        x = map.orientation()
        if x==Map.Orientation.Isometric:
            renderer = IsometricRenderer(map)
        elif x==Map.Orientation.Staggered:
            renderer = StaggeredRenderer(map)
        elif x==Map.Orientation.Hexagonal:
            renderer = HexagonalRenderer(map)
        else:
            renderer = OrthogonalRenderer(map)

        if (self.mTileSize > 0):
            xScale = self.mTileSize / map.tileWidth()
            yScale = self.mTileSize / map.tileHeight()
        else:
            xScale = yScale = self.mScale

        mapSize = renderer.mapSize()
        margins = map.computeLayerOffsetMargins()
        mapSize.setWidth(mapSize.width() + margins.left() + margins.right())
        mapSize.setHeight(mapSize.height() + margins.top() + margins.bottom())
    
        mapSize.setWidth(mapSize.width()*xScale)
        mapSize.setHeight(mapSize.height()*yScale)
        image = QImage(mapSize, QImage.Format_ARGB32)
        image.fill(Qt.transparent)
        painter = QPainter(image)
        if (xScale != 1.0 or yScale != 1.0):
            if (self.mUseAntiAliasing):
                painter.setRenderHints(QPainter.SmoothPixmapTransform |
                                       QPainter.Antialiasing)

            painter.setTransform(QTransform.fromScale(xScale, yScale))

        painter.translate(margins.left(), margins.top())
        
        # Perform a similar rendering than found in exportasimagedialog.py
        for layer in map.layers():
            if (not self.shouldDrawLayer(layer)):
                continue
            painter.setOpacity(layer.opacity())
            painter.translate(layer.offset())
            tileLayer = layer
            imageLayer = layer
            tp = type(layer)
            if tp == TileLayer:
                renderer.drawTileLayer(painter, tileLayer)
            elif tp == ImageLayer:
                renderer.drawImageLayer(painter, imageLayer)
            painter.translate(-layer.offset())
        painter.end()
        
        # Save image
        imageWriter = QImageWriter(imageFileName)
        if (not imageWriter.write(image)):
            qWarning("Error while writing " + imageFileName + ": " + imageWriter.errorString())
            return 1
    
        return 0
示例#50
0
    def renderMapToImage(self):
        if (not self.mMapDocument):
            self.mMapImage = QImage()
            return

        renderer = self.mMapDocument.renderer()
        r = self.contentsRect()
        mapSize = renderer.mapSize()
        if (mapSize.isEmpty()):
            self.mMapImage = QImage()
            return

        margins = self.mMapDocument.map().computeLayerOffsetMargins()
        mapSize.setWidth(mapSize.width() + margins.left() + margins.right())
        mapSize.setHeight(mapSize.height() + margins.top() + margins.bottom())
        
        # Determine the largest possible scale
        scale = min( r.width() / mapSize.width(), r.height() / mapSize.height())
        # Allocate a new image when the size changed
        imageSize = mapSize * scale
        if (self.mMapImage.size() != imageSize):
            self.mMapImage = QImage(imageSize, QImage.Format_ARGB32_Premultiplied)
            self.updateImageRect()

        if (imageSize.isEmpty()):
            return
        drawObjects = bool(self.mRenderFlags & MiniMapRenderFlag.DrawObjects)
        drawTiles = bool(self.mRenderFlags & MiniMapRenderFlag.DrawTiles)
        drawImages = bool(self.mRenderFlags & MiniMapRenderFlag.DrawImages)
        drawTileGrid = bool(self.mRenderFlags & MiniMapRenderFlag.DrawGrid)
        visibleLayersOnly = bool(self.mRenderFlags & MiniMapRenderFlag.IgnoreInvisibleLayer)
        # Remember the current render flags
        renderFlags = renderer.flags()
        renderer.setFlag(RenderFlag.ShowTileObjectOutlines, False)
        self.mMapImage.fill(Qt.transparent)
        painter = QPainter(self.mMapImage)
        painter.setRenderHints(QPainter.SmoothPixmapTransform)
        painter.setTransform(QTransform.fromScale(scale, scale))
        painter.translate(margins.left(), margins.top())
        renderer.setPainterScale(scale)
        for layer in self.mMapDocument.map().layers():
            if (visibleLayersOnly and not layer.isVisible()):
                continue
            painter.setOpacity(layer.opacity())
            painter.translate(layer.offset())
            tileLayer = layer
            objGroup = layer
            imageLayer = layer
            tp = type(layer)
            if (tp==TileLayer and drawTiles):
                renderer.drawTileLayer(painter, tileLayer)
            elif (tp==ObjectGroup and drawObjects):
                objects = objGroup.objects()
                if (objGroup.drawOrder() == ObjectGroup.DrawOrder.TopDownOrder):
                    objects = QList(sorted(objects, key=lambda x:x.y(), reverse=True))
                for object in objects:
                    if (object.isVisible()):
                        if (object.rotation() != 0.0):
                            origin = renderer.pixelToScreenCoords_(object.position())
                            painter.save()
                            painter.translate(origin)
                            painter.rotate(object.rotation())
                            painter.translate(-origin)

                        color = MapObjectItem.objectColor(object)
                        renderer.drawMapObject(painter, object, color)
                        if (object.rotation() != 0.0):
                            painter.restore()
            elif (tp==ImageLayer and drawImages):
                renderer.drawImageLayer(painter, imageLayer)
                
            painter.translate(-layer.offset())
            
        if (drawTileGrid):
            prefs = preferences.Preferences.instance()
            renderer.drawGrid(painter, QRectF(QPointF(), renderer.mapSize()),
                               prefs.gridColor())
        
        painter.end()
        renderer.setFlags(renderFlags)
示例#51
0
 def paint_tiny_icon(self, painter: QPainter, icon: QIcon) -> None:
     painter.setOpacity(0.5)
     icon.paint(painter, QRect(self.tile_rect.width() - 48, 0, 48, 48))
示例#52
0
 def paintEvent(self, event):
     painter = QPainter()
     painter.begin(self)
     painter.setOpacity(self.pixmap_opacity)
     painter.drawPixmap(0, 0, self.old_pixmap)
     painter.end()
示例#53
0
    def paintEvent(self, e):
        if not self.visibleRegion().isEmpty():
            # Stretch factor
            mul = (self.height() - 4)
            mul /= (self.DB_MAX - self.DB_MIN)

            peaks = []
            for n, peak in enumerate(self.peaks):
                if peak > self.DB_CLIP:
                    self.clipping[n] = True

                if peak < self.DB_MIN:
                    peak = self.DB_MIN
                elif peak > self.DB_MAX:
                    peak = self.DB_MAX

                peaks.append(round((peak - self.DB_MIN) * mul))

            rmss = []
            for n, rms in enumerate(self.rmss):
                if rms < self.DB_MIN:
                    rms = self.DB_MIN
                elif rms > self.DB_MAX:
                    rms = self.DB_MAX

                rmss.append(round((rms - self.DB_MIN) * mul))

            decPeaks = []
            for decPeak in self.decPeak:
                if decPeak < self.DB_MIN:
                    decPeak = self.DB_MIN
                elif decPeak > self.DB_MAX:
                    decPeak = self.DB_MAX

                decPeaks.append(round((decPeak - self.DB_MIN) * mul))

            qp = QPainter()
            qp.begin(self)
            qp.setBrush(QColor(0, 0, 0, 0))

            xpos = 0
            xdim = self.width() / len(peaks)

            for n in range(len(peaks)):
                peak = peaks[n]
                rms = rmss[n]
                decPeak = decPeaks[n]

                # Maximum "peak-rect" size
                maxRect = QtCore.QRect(xpos,
                                       self.height() - 2,
                                       xdim - 2,
                                       2 - self.height())

                # Set QLinearGradient start and final-stop position
                self.grad.setStart(maxRect.topLeft())
                self.grad.setFinalStop(maxRect.bottomRight())

                # Draw peak (audio peak in dB)
                rect = QtCore.QRect(xpos, self.height() - 2, xdim - 2, -peak)
                qp.setOpacity(0.6)
                qp.fillRect(rect, self.grad)
                qp.setOpacity(1.0)

                # Draw rms (in db)
                rect = QtCore.QRect(xpos, self.height() - 2, xdim - 2, -rms)
                qp.fillRect(rect, self.grad)

                # Draw decay peak
                decRect = QtCore.QRect(xpos, (self.height() - 3) - decPeak,
                                       xdim - 2, 2)
                qp.fillRect(decRect, self.grad)

                # Draw Borders
                if self.clipping.get(n, False):
                    qp.setPen(QColor(200, 0, 0))
                else:
                    qp.setPen(QColor(100, 100, 100))

                qp.drawRect(maxRect)

                xpos += xdim

            qp.end()
 def paintEvent(self, event):
     """Overloaded paintEvent to set opacity and pic."""
     painter = QPainter(self)
     painter.setOpacity(self.opacity)
     if self.old_pic:
         painter.drawPixmap(0, 0, self.old_pic)