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()
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)
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
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
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()