def drawInstructions(self, painter): text = "Click and drag with the left mouse button to rotate the Qt " "logo." metrics = QFontMetrics(self.font()) border = max(4, metrics.leading()) rect = metrics.boundingRect( 0, 0, self.width() - 2 * border, int(self.height() * 0.125), Qt.AlignCenter | Qt.TextWordWrap, text, ) painter.setRenderHint(QPainter.TextAntialiasing) painter.fillRect( QRect(0, 0, self.width(), rect.height() + 2 * border), QColor(0, 0, 0, 127) ) painter.setPen(Qt.white) painter.fillRect( QRect(0, 0, self.width(), rect.height() + 2 * border), QColor(0, 0, 0, 127) ) painter.drawText( (self.width() - rect.width()) / 2, border, rect.width(), rect.height(), Qt.AlignCenter | Qt.TextWordWrap, text, )
def paintText(self, text, color, fontSize, refX, refY, painter): ''' Paint text on top of the image and OpenGL drawings :param text: chars to write :param color: text color :param fontSize: text size in mm :param refX: position in reference units (mm of the real instrument). This is relative to the measurement unit position, NOT in pixels. :param refY: position in reference units (mm of the real instrument). This is relative to the measurement unit position, NOT in pixels. ''' prevPen = painter.pen() pPositionX = self.refToScreenX(refX) - (fontSize*self.scalingFactor*0.072) pPositionY = self.refToScreenY(refY) - (fontSize*self.scalingFactor*0.212) font = QFont('Bitstream Vera Sans') # Enforce minimum font size of 5 pixels fSize = max(5, int(fontSize*self.scalingFactor*1.26)) font.setPixelSize(fSize) metrics = QFontMetrics(font) border = max(4, metrics.leading()) rect = metrics.boundingRect(0, 0, self.width() - 2*border, int(self.height()*0.125), Qt.AlignLeft | Qt.TextWordWrap, text) painter.setPen(color) painter.setFont(font) painter.setRenderHint(QPainter.TextAntialiasing) painter.drawText(pPositionX, pPositionY, rect.width(), rect.height(), Qt.AlignCenter | Qt.TextWordWrap, text) painter.setPen(prevPen)
def drawInstructions(self, painter): text = 'Press F1 for controls' metrics = QFontMetrics(QFont("Times", 12, QFont.Bold)) border = max(4, metrics.leading()) rect = metrics.boundingRect(0, 0, self.width() - 2*border, int(self.height()*0.125), Qt.AlignCenter, text) painter.setRenderHint(QPainter.TextAntialiasing) painter.fillRect(QRect(0, 0, self.width(), rect.height() + 2*border), QColor(0, 0, 0, 127)) painter.setPen(Qt.white) painter.fillRect(QRect(0, 0, self.width(), rect.height() + 2*border), QColor(0, 0, 0, 127)) painter.drawText((self.width() - rect.width())/2, border, rect.width(), rect.height(), Qt.AlignCenter | Qt.TextWordWrap, text)
def drawInstructions(self, painter): text = "Click and drag with the left mouse button to rotate the Qt " \ "logo." metrics = QFontMetrics(self.font()) border = max(4, metrics.leading()) rect = metrics.boundingRect(0, 0, self.width() - 2 * border, int(self.height() * 0.125), Qt.AlignCenter | Qt.TextWordWrap, text) painter.setRenderHint(QPainter.TextAntialiasing) painter.fillRect(QRect(0, 0, self.width(), rect.height() + 2 * border), QColor(0, 0, 0, 127)) painter.setPen(Qt.white) painter.fillRect(QRect(0, 0, self.width(), rect.height() + 2 * border), QColor(0, 0, 0, 127)) painter.drawText((self.width() - rect.width()) / 2, border, rect.width(), rect.height(), Qt.AlignCenter | Qt.TextWordWrap, text)