Пример #1
0
    def paintEvent(self, e):
        """
        Reimplement repaintEvent.

        """
        self.voxels_painter = QPainter()
        self.voxels_painter.begin(self)
        if not self.image or not self.drawing:
            background = self.background.copy()
            blend = reduce(composition, self.model.rgba_list(self.n_slice), background)
            image = qrgba2qimage(blend)
            self.image = image
        pm = QPixmap.fromImage(self.image)
        pm = pm.scaled(pm.size() * self.model.get_scale_factor("grid"))
        self.pm = pm
        self.voxels_painter.drawPixmap(0, 0, pm, 0, 0, pm.size().width(), pm.size().height())

        # draw voxels if necessary
        if self.drawing and self.voxels:
            self.draw_voxels(self.voxels)

        # draw crosshair on picture
        if self.model.display_cross() and self.is_current_slice():
            scale = self.model.get_scale_factor("grid")
            current_pos = self.model.get_cross_pos()
            horizon_src = (current_pos[0] * scale, 0)
            horizon_targ = (current_pos[0] * scale, self.pm.size().height())
            self.voxels_painter.setPen(QColor(0, 255, 0, 255))
            self.voxels_painter.drawLine(horizon_src[0], horizon_src[1], horizon_targ[0], horizon_targ[1])
            vertical_src = (0, current_pos[1] * scale)
            vertical_targ = (self.pm.size().width(), current_pos[1] * scale)
            self.voxels_painter.drawLine(vertical_src[0], vertical_src[1], vertical_targ[0], vertical_targ[1])

        self.voxels_painter.end()
Пример #2
0
    def make_background(self):
        """
        Create a whole black background.

        """
        background = np.zeros((self.size().height(), self.size().width(), 3), dtype=np.uint8)
        return qrgba2qimage(background)
Пример #3
0
    def paintEvent(self, e):
        """
        Reimplement paintEvent.

        """
        self.is_painting = True
        self.voxels_painter = QPainter()
        self.voxels_painter.begin(self)

        self._expanding_factor = self.holder.get_expanding_factor()

        # composite volume picture
        if not self.image or not self.drawing:
            back_temp = np.zeros((self.model.getX(), self.model.getY(), 3),
                                 dtype=np.uint8)
            blend = reduce(composition, self.model.get_axial_rgba_list(),
                           back_temp)
            image = qrgba2qimage(blend)
            self.image = image

        # draw black backgroud
        self.background = self.make_background()
        pm = QPixmap.fromImage(self.background)
        self.voxels_painter.drawPixmap(0, 0, pm)

        # draw volume picture
        pm = QPixmap.fromImage(self.image)
        self.pm = pm.scaled(pm.size() * self.model.get_scale_factor('orth') *
                            self._expanding_factor)
        if not self.pic_src_point:
            self.pic_src_point = self.center_src_point()
        self.voxels_painter.drawPixmap(self.pic_src_point[0],
                                       self.pic_src_point[1], self.pm)

        # draw voxels if necessary
        if self.drawing and self.holder.voxels:
            self.draw_voxels(self.holder.voxels)

        # draw cross line on picture
        if self.model.display_cross():
            scale = self.model.get_scale_factor(
                'orth') * self._expanding_factor
            current_pos = self.model.get_cross_pos()
            horizon_src = (0, (current_pos[1] + 0.5) * scale + \
                              self.pic_src_point[1])
            horizon_targ = (self.size().width(), (current_pos[1] + 0.5) * \
                                                 scale + self.pic_src_point[1])
            self.voxels_painter.setPen(QColor(0, 255, 0, 255))
            self.voxels_painter.drawLine(horizon_src[0], horizon_src[1],
                                         horizon_targ[0], horizon_targ[1])
            vertical_src = ((current_pos[0] + 0.5) * scale + \
                            self.pic_src_point[0],
                            0)
            vertical_targ = ((current_pos[0] + 0.5) * scale + \
                             self.pic_src_point[0],
                             self.size().height())
            self.voxels_painter.drawLine(vertical_src[0], vertical_src[1],
                                         vertical_targ[0], vertical_targ[1])
        self.voxels_painter.end()
        self.is_painting = False
Пример #4
0
    def make_background(self):
        """
        Create a whole black background.

        """
        background = np.zeros((self.size().height(), self.size().width(), 3),
                              dtype=np.uint8)
        return qrgba2qimage(background)
Пример #5
0
    def paintEvent(self, e):
        """
        Reimplement paintEvent.

        """
        self.is_painting = True
        self.voxels_painter = QPainter()
        self.voxels_painter.begin(self)

        self._expanding_factor = self.holder.get_expanding_factor()

        # composite volume picture
        if not self.image or not self.drawing:
            back_temp = np.zeros((self.model.getZ(), self.model.getX(), 3), dtype=np.uint8)
            blend = reduce(composition, self.model.get_sagital_rgba_list(), back_temp)
            image = qrgba2qimage(blend)
            self.image = image

        # draw black background
        self.background = self.make_background()
        pm = QPixmap.fromImage(self.background)
        self.voxels_painter.drawPixmap(0, 0, pm)

        # draw volume picture
        pm = QPixmap.fromImage(self.image)
        self.pm = pm.scaled(pm.size() * self.model.get_scale_factor("orth") * self._expanding_factor)
        if not self.pic_src_point:
            self.pic_src_point = self.center_src_point()
        self.voxels_painter.drawPixmap(self.pic_src_point[0], self.pic_src_point[1], self.pm)

        # draw voxels if necessary
        if self.drawing and self.holder.voxels:
            self.draw_voxels(self.holder.voxels)

        # draw cross line on picture
        if self.model.display_cross():
            scale = self.model.get_scale_factor("orth") * self._expanding_factor
            current_pos = self.model.get_cross_pos()
            horizon_src = (0, (self.model.getZ() - 1 - current_pos[2]) * scale + self.pic_src_point[1])
            horizon_targ = (
                self.size().width(),
                (self.model.getZ() - 1 - current_pos[2]) * scale + self.pic_src_point[1],
            )
            self.voxels_painter.setPen(QColor(0, 255, 0, 255))
            self.voxels_painter.drawLine(horizon_src[0], horizon_src[1], horizon_targ[0], horizon_targ[1])
            vertical_src = (current_pos[1] * scale + self.pic_src_point[0], 0)
            vertical_targ = (current_pos[1] * scale + self.pic_src_point[0], self.size().height())
            self.voxels_painter.drawLine(vertical_src[0], vertical_src[1], vertical_targ[0], vertical_targ[1])

        self.voxels_painter.end()
        self.is_painting = False
Пример #6
0
    def paintEvent(self, e):
        """
        Reimplement repaintEvent.

        """
        self.voxels_painter = QPainter()
        self.voxels_painter.begin(self)
        if not self.image or not self.drawing:
            background = self.background.copy()
            blend = reduce(composition, self.model.rgba_list(self.n_slice),
                           background)
            image = qrgba2qimage(blend)
            self.image = image
        pm = QPixmap.fromImage(self.image)
        pm = pm.scaled(pm.size() * self.model.get_scale_factor('grid'))
        self.pm = pm
        self.voxels_painter.drawPixmap(0, 0, pm, 0, 0,
                                       pm.size().width(),
                                       pm.size().height())

        # draw voxels if necessary
        if self.drawing and self.voxels:
            self.draw_voxels(self.voxels)

        # draw crosshair on picture
        if self.model.display_cross() and self.is_current_slice():
            scale = self.model.get_scale_factor('grid')
            current_pos = self.model.get_cross_pos()
            horizon_src = ((current_pos[0] + 0.5) * scale, 0)
            horizon_targ = ((current_pos[0] + 0.5) * scale,
                            self.pm.size().height())
            self.voxels_painter.setPen(QColor(0, 255, 0, 255))
            self.voxels_painter.drawLine(horizon_src[0], horizon_src[1],
                                         horizon_targ[0], horizon_targ[1])
            vertical_src = (0,
                            (self.model.getX() - current_pos[1] - 0.5) * scale)
            vertical_targ = (self.pm.size().width(),
                             (self.model.getX() - current_pos[1] - 0.5) *
                             scale)
            self.voxels_painter.drawLine(vertical_src[0], vertical_src[1],
                                         vertical_targ[0], vertical_targ[1])

        self.voxels_painter.end()