Есть ли способ стереть цвет на изображении в QGraphi c сцене в pythonQt5 - PullRequest
0 голосов
/ 21 апреля 2020

Я просто хочу стереть цвет на изображении, представленном в графической сцене c, когда многоугольников нарисовано одно за другим, когда я выбираю первый многоугольник, все полигоны, которые находятся за его пределами, должны стать прозрачный и видимый.

Было бы полезно, если бы кто-то предложил мне ресурс,

Ниже упомянутый код - это элемент Qgraphics для polygon.py

    def paint(self, painter=QPainter, option=QStyleOptionGraphicsItem,widget=QWidget):
        path = QPainterPath()
        painter.setRenderHint(QPainter.Antialiasing)
        painter.setRenderHint(QPainter.HighQualityAntialiasing)
        painter.setRenderHint(QPainter.SmoothPixmapTransform)
        self.setZ_value_list = []
        self.All_polygon_list=[]

        for item in self.papa.items():
            item.show()
            if isinstance(item, Polygon):
                self.setZ_value_list.append(item.z_value)
                polygon_oo=[(p.pos().x(), p.pos().y()) for p in item.handle_list]
                self.All_polygon_list.append(polygon_oo)

        self.temp_zvalue=max(self.setZ_value_list)+1
        if self.fill and self.closed:
            self.color.setAlpha(self.op)
            painter.setBrush(self.color)
            painter.setPen(QPen(QColor(0, 0, 0, 0)))

            if self.isSelected():
                self.less_than_z_value = []
                self.less_than_polygon=[]
                self.polygon_handles=[]


                painter.setBrush(QBrush(self.polygon_color, Qt.BDiagPattern)) 
                pen = QPen(QColor(Qt.red))
                pen.setWidth(self.pen_width)
                painter.setPen(pen)
                # painter.setPen(QPen(QColor(Qt.yellow)))
                painter.drawPolygon(self.poly)

                for item in self.papa.items():
                    if isinstance(item, Polygon):
                        if item == self:
                            item.setZValue(self.temp_zvalue)
                            item.show()

Ниже упомянутый код взят из сцены Graphi c, где он копирует элемент многоугольника на сцене

    def mousePressEvent(self, event=QGraphicsSceneMouseEvent):

        pos = event.scenePos()

        if self.drag:
            return

        if self.image is not None:
            if not self.sceneRect().contains(pos):
                pos = self.correct_pos(pos)
            if not self.g_pixmap.contains(pos):
                pos = self.correct_pos(pos)

        if event.button() == Qt.LeftButton:
            if self.drawing and not self.drag:
                if self.current is None:
                    self.clear_mod_shapes()
                    self.current = Polygon(self)
                    self.current.setSelected(True)
                    self.current.addPoint(pos)
                    self.update()
                    return
                else:
                    self.current.addPoint(pos)
                    self.update()
                    return

            if self.editing:

                for i in self.shapes:
                    if i.isSelected():
                        self.selected = i
                        self.shape_selected.emit()
                        return

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...