def drawForeground(self, painter, rect): if self._tiling is None: return tile_nos = self._tiling.intersected(rect) for tileId in tile_nos: p = self._brushingLayer[tileId] if p.dataVer == p.imgVer: continue p.paint(painter) #access to the underlying image patch is serialized ## draw tile outlines if self._showTileOutlines: # Dashed black line pen = QPen() pen.setDashPattern([5,5]) painter.setPen(pen) painter.drawRect(self._tiling.imageRects[tileId]) # Dashed white line # (offset to occupy the spaces in the dashed black line) pen = QPen() pen.setDashPattern([5,5]) pen.setDashOffset(5) pen.setColor(QColor(Qt.white)) painter.setPen(pen) painter.drawRect(self._tiling.imageRects[tileId])
def paint(self, painter, option, widget=None): """ Paint a single line of the slice intersection marker. """ width = self._parent._width height = self._parent._height thickness = self._parent.PEN_THICKNESS # Our pen thickness is consistent across zoom levels because the pen is "cosmetic" # However, that doesn't ensure a consistent-size dash pattern. # Determine the inverse scaling factor from scene to view to set a consistent dash pattern at all scales. view = self.scene().views()[0] inverted_transform, has_inverse = view.transform().inverted() dash_length = 4 / inverted_transform.m11() dash_length = max(0.5, dash_length) # Draw the line with two pens to get a black-and-white dashed line. #pen_white = QPen( Qt.white, thickness ) pen_white = QPen(self._parent._cropColor, thickness) pen_white.setDashPattern([dash_length, dash_length]) pen_white.setCosmetic(True) pen_black = QPen(Qt.black, thickness) pen_black.setDashPattern([dash_length, dash_length]) pen_black.setCosmetic(True) pen_black.setDashOffset(dash_length) with painter_context(painter): t = painter.transform() painter.setTransform(self.scene().data2scene * t) # Draw the line with two pens to get a black-and-white dashed line. for pen in [pen_white, pen_black]: painter.setPen(pen) if self._direction == 'horizontal': painter.drawLine(QPointF(0.0, self.position), QPointF(width, self.position)) else: painter.drawLine(QPointF(self.position, 0.0), QPointF(self.position, height))
def paint(self, painter, option, widget=None): """ Paint a single line of the slice intersection marker. """ width = self._parent._width height = self._parent._height thickness = self._parent.PEN_THICKNESS # Our pen thickness is consistent across zoom levels because the pen is "cosmetic" # However, that doesn't ensure a consistent-size dash pattern. # Determine the inverse scaling factor from scene to view to set a consistent dash pattern at all scales. view = self.scene().views()[0] inverted_transform, has_inverse = view.transform().inverted() dash_length = 4 / inverted_transform.m11() dash_length = max( 0.5, dash_length ) # Draw the line with two pens to get a black-and-white dashed line. #pen_white = QPen( Qt.white, thickness ) pen_white = QPen( self._parent._cropColor, thickness ) pen_white.setDashPattern([dash_length, dash_length]) pen_white.setCosmetic(True) pen_black = QPen( Qt.black, thickness ) pen_black.setDashPattern([dash_length, dash_length]) pen_black.setCosmetic(True) pen_black.setDashOffset(dash_length) with painter_context(painter): t = painter.transform() painter.setTransform(self.scene().data2scene * t) # Draw the line with two pens to get a black-and-white dashed line. for pen in [pen_white, pen_black]: painter.setPen( pen ) if self._direction == 'horizontal': painter.drawLine( QPointF(0.0, self.position), QPointF(width, self.position) ) else: painter.drawLine( QPointF(self.position, 0.0), QPointF(self.position, height) )
def drawForeground(self, painter, rect): if self._tiling is None: return if self._showTileOutlines: tile_nos = self._tiling.intersected(rect) for tileId in tile_nos: ## draw tile outlines # Dashed black line pen = QPen() pen.setDashPattern([5,5]) painter.setPen(pen) painter.drawRect(self._tiling.imageRects[tileId]) # Dashed white line # (offset to occupy the spaces in the dashed black line) pen = QPen() pen.setDashPattern([5,5]) pen.setDashOffset(5) pen.setColor(QColor(Qt.white)) painter.setPen(pen) painter.drawRect(self._tiling.imageRects[tileId])
def drawForeground(self, painter, rect): if self._tiling is None: return if self._showTileOutlines: tile_nos = self._tiling.intersected(rect) for tileId in tile_nos: ## draw tile outlines # Dashed black line pen = QPen() pen.setDashPattern([5, 5]) painter.setPen(pen) painter.drawRect(self._tiling.imageRects[tileId]) # Dashed white line # (offset to occupy the spaces in the dashed black line) pen = QPen() pen.setDashPattern([5, 5]) pen.setDashOffset(5) pen.setColor(QColor(Qt.white)) painter.setPen(pen) painter.drawRect(self._tiling.imageRects[tileId])