def printFile(self): # Needs some work... printDialog = QPrintDialog(self.printer, py_de) if printDialog.exec_() == QDialog.Accepted: margin = 10 pageNum = 1 yPos = 0 printJob = QPainter() printJob.begin(self.printer) printJob.setFont(self.font) fm = printJob.fontMetrics() for i in range(self.textEdit.lines()): if margin + yPos > self.printer.height() - margin: pageNum += 1 self.printer.newPage() yPos = 0 printJob.drawText(margin, # X margin + yPos, # Y self.printer.width(), # Width self.printer.height(),# Height QtCore.Qt.AlignTop, # Alignment self.textEdit.text(i - 1)# The text to print ) yPos += fm.lineSpacing() printJob.end
def paintEvent(self, _): s = QToolButton.sizeHint(self) r = 0 p = QPoint() if self.direction == QBoxLayout.TopToBottom: r = 90 p = QPoint(0, -s.height()) elif self.direction == QBoxLayout.BottomToTop: r = -90 p = QPoint(-s.width(), 0) pixmap = QPixmap(s) pixmap.fill(QColor(0, 0, 0, 0)) o = QStyleOptionToolButton() self.initStyleOption(o) o.rect.setSize(s) pixpainter = QPainter() pixpainter.begin(pixmap) self.style().drawComplexControl(QStyle.CC_ToolButton, o, pixpainter, self) pixpainter.end() painter = QPainter(self) painter.rotate(r) painter.drawPixmap(p, pixmap)
def setNameAndBrush(self, sigma, color=Qt.black): self.sigma = sigma self.setText(str(self.brushSize)) font = QFont() font.setPointSize(10) font.setBold(True) self.setFont(font) self.setForeground(color) pixmap = QPixmap(self.pixmapSize) pixmap.fill(Qt.transparent) painter = QPainter() painter.begin(pixmap) painter.setRenderHint(QPainter.Antialiasing, True) painter.setPen(color) brush = QBrush(color) painter.setBrush(brush) painter.drawEllipse( QRect( self.pixmapSize.width() / 2 - self.brushSize / 2, self.pixmapSize.height() / 2 - self.brushSize / 2, self.brushSize, self.brushSize, ) ) painter.end() self.setIcon(QIcon(pixmap)) self.setTextAlignment(Qt.AlignVCenter)
def paintEvent(self, event): if not self.text().isEmpty(): painter = QPainter() painter.begin(self) painter.setRenderHint(QPainter.Antialiasing) color = self.palette().color(QPalette.Highlight) color.setAlpha(127) painter.setBrush(QBrush(color)) color = self.palette().color(QPalette.HighlightedText) color.setAlpha(127) painter.setPen(QPen(color)) size = self.height() / 2.0 left = self.width() - 4 painter.drawRect(left - size, size * 0.5, size, size) painter.drawLine(left - size * 0.75, size * 0.75, left - size * 0.25, size * 1.25) painter.drawLine(left - size * 0.25, size * 0.75, left - size * 0.75, size * 1.25) painter.end() QLabel.paintEvent(self, event)
def paintEvent(self, event): painter = QPainter() painter.begin(self) if not self.showRegionMap: painter.drawPixmap(0, 0, self.scaledOwnershipMap) rect = self.imageRect() if self.isEnabled(): if self.showRegionMap: painter.drawPixmap(0, 0, self.scaledRegionMap) else: if self.currentTerritory: painter.drawPixmap(0, 0, self.coloredMask(self.currentTerritory, QColor(*self.game.clientPlayer.color))) #draw active animations for a in self.animations: painter.save() a.paint(painter) painter.restore() painter.drawPixmap(0, 0, self.scaledTroopCountMap) else: painter.fillRect(rect, QColor(0, 0, 0, 200)) painter.drawText(rect, Qt.AlignCenter, "Waiting for the game to start.") #remaining troops if self.game.yourTurn() and self.game.remainingTroops: troopText = "Remaining troops: %d" % self.game.remainingTroops troopRect = QRect(0, 0, painter.fontMetrics().width(troopText) + 8, painter.fontMetrics().height() + 8) troopRect.moveBottomLeft(rect.bottomLeft()) painter.setPen(Qt.white) painter.setBrush(QColor(0, 0, 0, 200)) painter.drawRect(troopRect) painter.drawText(troopRect, Qt.AlignCenter, troopText) painter.end()
def drawScaleBar(self, painter, value_range, unit="", size=None): if self.scale_show: sc = ScaleBarDrawer(position=self.scale_position, transfer_function=self.transfer_function, font=self.scale_font, text_color=self.scale_text, line_color=self.scale_line, line_thickness=self.scale_line_thickness, value_range=value_range, unit=unit) log_debug("Drawing scale bar!") if not self.scale_bar_outside_image: sc.draw(painter, size) else: if size is None: viewport = painter.viewport() # viewport rectangle mat, ok = painter.worldMatrix().inverted() if not ok: raise ValueError("Transformation matrix of painter is singular.") size = mat.mapRect(viewport) pic = QPicture() new_painter = QPainter() new_painter.begin(pic) bounding_rect = sc.draw(new_painter, size) new_painter.end() pic.setBoundingRect(pic.boundingRect() | bounding_rect.toRect()) log_debug("Returning picture %s" % (pic,)) return pic
def drawBox(self): '''handle errors''' if not self.pixmap: self.showErrMsg('Please choose an image first!') return x, y, w, h = self.line_x.text(), self.line_y.text(), self.line_w.text(),\ self.line_h.text() if not (x.isdigit() and y.isdigit() and w.isdigit() and h.isdigit()): self.showErrMsg('Please input integer!') return x, y, w, h = int(x), int(y), int(w), int(h) if not 0 <= x <= self.pixmap.width(): self.showErrMsg('Value Error', 'x should be an integer between 0 and %d' % self.pixmap.width()) elif not 0 <= y <= self.pixmap.height(): self.showErrMsg('Value Error', 'y should be an integer between 0 and %d' % self.pixmap.height()) elif not 0 <= w <= (self.pixmap.width() - x): self.showErrMsg('Value Error', 'x + w should be an integer between 0 and %d' % self.pixmap.width()) elif not 0 <= h <= (self.pixmap.height() - y): self.showErrMsg('Value Error', 'y + h should be an integer between 0 and %d' % self.pixmap.height()) else: painter = QPainter() painter.begin(self.pixmap) pen = QPen(QtCore.Qt.red, 5, QtCore.Qt.SolidLine) painter.setPen(pen) painter.drawRect(x, y, w, h) painter.end() self.labelImage.setPixmap(self.pixmap)
def exportAsImage(self): filename = unicode(QFileDialog.getSaveFileName(self, self.tr('Save Model As Image'), '', self.tr('PNG files (*.png *.PNG)'))) if not filename: return if not filename.lower().endswith('.png'): filename += '.png' totalRect = QRectF(0, 0, 1, 1) for item in self.scene.items(): totalRect = totalRect.united(item.sceneBoundingRect()) totalRect.adjust(-10, -10, 10, 10) img = QImage(totalRect.width(), totalRect.height(), QImage.Format_ARGB32_Premultiplied) img.fill(Qt.white) painter = QPainter() painter.setRenderHint(QPainter.Antialiasing) painter.begin(img) self.scene.render(painter, totalRect, totalRect) painter.end() img.save(filename)
def _renderedImage2(self, width, height, extent, transp_background=False, layerids=None): """rendering function for GIS < 2.7""" antialias = True if self._renderer is None: self._initRenderer() canvas = self.exportSettings.canvas if canvas is None: logMessage("With this QGIS version (<= 2.6), map canvas needs to be set to the export settings") return if layerids is None: layerids = [mapLayer.id() for mapLayer in canvas.layers()] renderer = self._renderer # QgsMapRenderer renderer.setLayerSet(layerids) image = QImage(width, height, QImage.Format_ARGB32_Premultiplied) if transp_background: image.fill(QColor(Qt.transparent).rgba()) # else: image.fill(canvas.canvasColor().rgba()) # renderer.setOutputSize(image.size(), image.logicalDpiX()) renderer.setExtent(extent.unrotatedRect()) painter = QPainter() painter.begin(image) if antialias: painter.setRenderHint(QPainter.Antialiasing) renderer.render(painter) painter.end() return tools.base64image(image)
def renderedImage(self, width, height, extent, transp_background=False, layerids=None): if QGis.QGIS_VERSION_INT < 20700: return self._renderedImage2(width, height, extent, transp_background, layerids) # render layers with QgsMapRendererCustomPainterJob from qgis.core import QgsMapRendererCustomPainterJob antialias = True settings = self.exportSettings.mapSettings # store old map settings old_outputSize = settings.outputSize() old_extent = settings.extent() old_rotation = settings.rotation() old_layerids = settings.layers() old_backgroundColor = settings.backgroundColor() # map settings settings.setOutputSize(QSize(width, height)) settings.setExtent(extent.unrotatedRect()) settings.setRotation(extent.rotation()) if layerids is not None: settings.setLayers(layerids) if transp_background: settings.setBackgroundColor(QColor(Qt.transparent)) #else: #TODO: remove #settings.setBackgroundColor(self.exportSettings.canvas.canvasColor()) has_pluginlayer = False for layerId in settings.layers(): layer = QgsMapLayerRegistry.instance().mapLayer(layerId) if layer and layer.type() == QgsMapLayer.PluginLayer: has_pluginlayer = True break # create an image image = QImage(width, height, QImage.Format_ARGB32_Premultiplied) painter = QPainter() painter.begin(image) if antialias: painter.setRenderHint(QPainter.Antialiasing) # rendering job = QgsMapRendererCustomPainterJob(settings, painter) if has_pluginlayer: job.renderSynchronously() # use this method so that TileLayerPlugin layer is rendered correctly else: job.start() job.waitForFinished() painter.end() # restore map settings settings.setOutputSize(old_outputSize) settings.setExtent(old_extent) settings.setRotation(old_rotation) settings.setLayers(old_layerids) settings.setBackgroundColor(old_backgroundColor) return tools.base64image(image)
def paintEvent(self, e): super().paintEvent(e) painter = QPainter() painter.begin(self) pen = QPen() pen.setWidth(2) painter.setPen(pen) right_as_line = False ral_place = [] if self.previous_commit != None and '\\' in self.previous_commit[-1]: right_as_line = True for f in range(len(self.previous_commit[-1])): if self.previous_commit[-1][f] == '\\': ral_place.append(f) i = 0 for j in range(len(self.commit[0])): if self.commit[0][j] == '*': painter.drawImage(QPoint(i,0), self.commit_image()) elif self.commit[0][j] == '|': x = 30/len(self.commit) if len(self.commit) > 1 and len(self.commit[1]) > j+1 and self.commit[1][j+1] == '\\': x = 15 painter.drawLine(i+15, 0, i+15, x) elif self.commit[0][j] == '\\': if right_as_line == True and j-1 in ral_place: painter.drawLine(i+15, 0, i+15, 15) else: painter.drawLine(i+15, 15, i+30, 15+(15/len(self.commit))) elif self.commit[0][j] == '/': painter.drawImage(QPoint(i,0), QImage(dirname(__file__)+'/icons/right.png')) elif self.commit[0][j] == '_': painter.drawImage(QPoint(i,0), QImage(dirname(__file__)+'/icons/line-flipped.png')) i += self.char_size down = 0 up = 0 left = False for j in range(1, len(self.commit)): i = 0 for k in range(len(self.commit[j])): if self.commit[j][k] == '|': x = (30/len(self.commit))*j if len(self.commit[0]) > k and self.commit[0][k] == '*': x += 15 if len(self.commit[j-1]) > k and self.commit[j-1][k-1] == '\\': x += (30/len(self.commit))/2 painter.drawLine(i+15, x, i+15, (30/len(self.commit))*(j+1)) elif self.commit[j][k] == '\\': painter.drawLine(i+1, 15, i+29, 15+(15/len(self.commit))*(j+1)) down = 5 up = 2 left = True elif self.commit[j][k] == '/': if left == True: painter.drawLine(i+2, 15+(13/len(self.commit))*(j+1), i+29, 15+(15/len(self.commit))*j) else: painter.drawLine(i+1, (30/len(self.commit))*(j+1)-up, i+27, down+(30/len(self.commit))*j) elif self.commit[j][k] == '_': painter.drawLine(i, 15+(15/len(self.commit))*j, i+30, 15+(15/len(self.commit))*j) i += self.char_size painter.end()
def paintEvent( self, event ) : MARGIN_PIXELS = 4 painter = QPainter() (r, g, b, alpha) = ImageUtils.rbgaTointValues(self.log.rgb, self.log.alpha) lineColour = QColor(r, g, b, alpha) assert lineColour != None assert self.log.line_style != None lineStyle = WidgetUtils.getQtPenStyle(self.log.line_style) assert lineStyle != None assert self.log.line_width != None lineWidth = NumberUtils.floatToIntDefault(self.log.line_width, 1) pen = QPen(lineColour, lineWidth, lineStyle) painter.begin(self) painter.setPen(pen) yLevel = self.logName_label.rect().bottomLeft().y() xStart = self.xpix[0] xStop = self.xpix[1] #horizontal line #logger.debug("--paintEvent() r: {0}, g: {1}, b: {2}, a: {3}, name{4}".format(r, g, b, alpha, self.log.name)) #logger.debug("--paintEvent() xStart: {0}, yLevel: {1}, xStop: {2}, yLevel: {3}".format(xStart, yLevel, xStop, yLevel)) painter.drawLine( xStart, yLevel, xStop, yLevel ) painter.end()
def paintEvent(self, event): painter = QPainter() painter.begin(self) painter.setRenderHint(QPainter.Antialiasing) painter.fillRect(event.rect(), QBrush(QColor(255, 255, 255, 127))) painter.setPen(QPen(Qt.NoPen)) for i in range(6): x_pos = self.width() / 2 + 30 * \ math.cos(2 * math.pi * i / 6.0) - 10 y_pos = self.height() / 2 + 30 * \ math.sin(2 * math.pi * i / 6.0) - 10 if (self.counter / 5) % 6 == i: linear_gradient = QLinearGradient(x_pos + 10, x_pos, y_pos + 10, y_pos) linear_gradient.setColorAt(0, QColor(135, 206, 250)) linear_gradient.setColorAt(1, QColor(0, 0, 128)) painter.setBrush(QBrush(linear_gradient)) else: linear_gradient = QLinearGradient(x_pos - 10, x_pos, y_pos + 10, y_pos) linear_gradient.setColorAt(0, QColor(105, 105, 105)) linear_gradient.setColorAt(1, QColor(0, 0, 0)) painter.setBrush(QBrush(linear_gradient)) painter.drawEllipse(x_pos, y_pos, 20, 20) painter.end()
def updateCircle(self, s): size = s * self.zoom pixmap = QPixmap(self.width(), self.height()) pixmap.fill(Qt.transparent) #painter ellipse 1 painter = QPainter() painter.begin(pixmap) painter.setRenderHint(QPainter.Antialiasing) pen = QPen(Qt.red) pen.setWidth(3) painter.setPen(pen) brush = QBrush(Qt.green) painter.setBrush(brush) painter.drawEllipse(QRect(self.width()/2 - size/2, self.height()/2 - size/2, size, size)) painter.end() #painter ellipse 2 painter2 = QPainter() painter2.begin(pixmap) painter2.setRenderHint(QPainter.Antialiasing) pen2 = QPen(Qt.green) pen2.setStyle(Qt.DotLine) pen2.setWidth(3) painter2.setPen(pen2) painter2.drawEllipse(QRect(self.width()/2 - size/2, self.height()/2 - size/2, size, size)) painter2.end() self.ellipseLabel.setPixmap(QPixmap(pixmap)) self.lastSize = s
def paintEvent(self, event): painter = QPainter() painter.begin(self) painter.setOpacity(self.pixmap_opacity) painter.drawPixmap(0, 0, self.old_pixmap) painter.end()
def drawScaleBar(self, painter, value_range, unit="", size=None): if self.scale_show: sc = ScaleBarDrawer(position=self.scale_position, transfer_function=self.transfer_function, font=self.scale_font, text_color=self.scale_text, line_color=self.scale_line, line_thickness=self.scale_line_thickness, value_range=value_range, unit=unit) log_debug("Drawing scale bar!") if not self.scale_bar_outside_image: sc.draw(painter, size) else: if size is None: viewport = painter.viewport() # viewport rectangle mat, ok = painter.worldMatrix().inverted() if not ok: raise ValueError( "Transformation matrix of painter is singular.") size = mat.mapRect(viewport) pic = QPicture() new_painter = QPainter() new_painter.begin(pic) bounding_rect = sc.draw(new_painter, size) new_painter.end() pic.setBoundingRect(pic.boundingRect() | bounding_rect.toRect()) log_debug("Returning picture %s" % (pic, )) return pic
def _plot(self, width, height, paint_device, plot_object = None, plot_method = None): if not plot_object: plot_object = self.controller if not plot_method: plot_method = plot_object.plot plot_object.setPlotWindow(width, height) canvas = DiPaintGLCanvas(paint_device) glpainter = DiPaintGLPainter(canvas) painter = QPainter() painter.begin(canvas.device()) glpainter.begin(painter) painter.setRenderHints(self.renderHints) painter.setClipRect(QRect(0, 0, width, height)) glpainter.Viewport(0, 0, width, height) value = plot_method(glpainter) transform = glpainter.transform glpainter.end() painter.end() return paint_device, value, transform
def paintEvent( self, event ): """ Overloads the paint event for this menu to draw its title based on its \ show title property. :param event | <QPaintEvent> """ super(XMenu, self).paintEvent(event) if ( self.showTitle() ): painter = QPainter() painter.begin(self) palette = self.palette() painter.setBrush(palette.color(palette.Button)) painter.setPen(Qt.NoPen) painter.drawRect(1, 1, self.width() - 2, 22) painter.setBrush(Qt.NoBrush) painter.setPen(palette.color(palette.ButtonText)) painter.drawText(1, 1, self.width() - 2, 22, Qt.AlignCenter, self.title()) painter.end()
def paintEvent(self, e): painter = QPainter() reactantside = "" productside = "" reactantside += self._CurrentReaction.GetReactants()[0].GetFormula() for x in range(1, len(self._CurrentReaction.GetReactants())): reactant = self._CurrentReaction.GetReactants()[x] formula = reactant.GetFormula() moles = reactant.GetInitialMoles() if moles > 0: reactantside += " + " + formula productside += self._CurrentReaction.GetProducts()[0].GetFormula() for x in range(1, len(self._CurrentReaction.GetProducts())): product = self._CurrentReaction.GetProducts()[x] formula = product.GetFormula() moles = product.GetInitialMoles() if moles > 0: productside += " + " + formula painter.begin(self) painter.setFont(QFont("Arial", 20, 50, False)) painter.setPen(QPen(Qt.red, 2, Qt.SolidLine)) painter.drawText(376 - (len(reactantside) * 15), 40, reactantside) target = QRectF(378, 20, 44, 32) arrows = QPixmap("assets/double arrow.png") portion = QRectF(10, 0, 44, 32) painter.drawPixmap(target, arrows, portion) painter.setPen(QPen(Qt.blue, 2, Qt.SolidLine)) painter.drawText(425, 40, productside) painter.end()
def _drawIcon(self, color=Qt.black): self.setForeground(QBrush(color)) if self.isRootNode: pixmap = QPixmap(20, 20) pixmap.fill(Qt.transparent) painter = QPainter() painter.begin(pixmap) pen = QPen(color) pen.setWidth(1) painter.setPen(pen) painter.setBrush(color) painter.setRenderHint(QPainter.Antialiasing) if not self.isExpanded: arrowRightPolygon = [ QPoint(6, 6), QPoint(6, 14), QPoint(14, 10) ] painter.drawPolygon(QPolygon(arrowRightPolygon)) else: arrowDownPolygon = [ QPoint(6, 6), QPoint(15, 6), QPoint(10, 14) ] painter.drawPolygon(QPolygon(arrowDownPolygon)) painter.end() self.setIcon(QIcon(pixmap))
def paintEvent(self, event): painter = QPainter() painter.begin(self) painter.setRenderHint(QPainter.Antialiasing) painter.fillRect(event.rect(), QBrush(QColor(255, 255, 255, 127))) painter.setPen(QPen(Qt.NoPen)) for i in xrange(6): x_pos = self.width() / 2 + 30 * \ math.cos(2 * math.pi * i / 6.0) - 10 y_pos = self.height() / 2 + 30 * \ math.sin(2 * math.pi * i / 6.0) - 10 if (self.counter / 5) % 6 == i: linear_gradient = QLinearGradient( x_pos + 10, x_pos, y_pos + 10, y_pos) linear_gradient.setColorAt(0, QColor(135, 206, 250)) linear_gradient.setColorAt(1, QColor(0, 0, 128)) painter.setBrush(QBrush(linear_gradient)) else: linear_gradient = QLinearGradient( x_pos - 10, x_pos, y_pos + 10, y_pos) linear_gradient.setColorAt(0, QColor(105, 105, 105)) linear_gradient.setColorAt(1, QColor(0, 0, 0)) painter.setBrush(QBrush(linear_gradient)) painter.drawEllipse( x_pos, y_pos, 20, 20) painter.end()
def paintEvent(self, e): painter = QPainter() reactantside = "" productside = "" reactantside += self._CurrentReaction.GetReactants()[0].GetFormula() for x in range(1, len(self._CurrentReaction.GetReactants())): reactant = self._CurrentReaction.GetReactants()[x] formula = reactant.GetFormula() moles = reactant.GetInitialMoles() if moles > 0: reactantside += " + "+formula productside += self._CurrentReaction.GetProducts()[0].GetFormula() for x in range(1, len(self._CurrentReaction.GetProducts())): product = self._CurrentReaction.GetProducts()[x] formula = product.GetFormula() moles = product.GetInitialMoles() if moles > 0: productside += " + "+formula painter.begin(self) painter.setFont(QFont("Arial", 20, 50, False)) painter.setPen(QPen(Qt.red, 2, Qt.SolidLine)) painter.drawText(376 - (len(reactantside) * 15), 40, reactantside) target = QRectF(378, 20, 44, 32) arrows = QPixmap("assets/double arrow.png") portion = QRectF(10, 0, 44, 32) painter.drawPixmap(target, arrows, portion) painter.setPen(QPen(Qt.blue, 2, Qt.SolidLine)) painter.drawText(425, 40, productside) painter.end()
def paintEvent(self, event): painter = QPainter() painter.begin(self) painter.setRenderHint(QPainter.Antialiasing) painter.setPen(QPen(Qt.NoPen)) painter.setBrush(QBrush(self.palette().color(QPalette.Highlight))) num = 8 painter.translate(self.width()/2, self.height()/2) painter.rotate(360.0/num * (self.counter % num)) for i in range(num): s = 25 + i x = 50 * math.cos(2.0 * math.pi * i / num) - s/2.0 y = 50 * math.sin(2.0 * math.pi * i / num) - s/2.0 painter.drawEllipse( x, y, s, s) painter.end()
def updateFilledCircle(self, s): size = s * self.zoom pixmap = QPixmap(self.width(), self.height()) pixmap.fill(Qt.transparent) #painter filled ellipse p = QPalette() painter = QPainter() painter.begin(pixmap) painter.setRenderHint(QPainter.Antialiasing) brush = QBrush(p.link().color()) painter.setBrush(brush) painter.setOpacity(0.4) painter.drawEllipse(QRect(self.width()/2 - size/2, self.height()/2 - size/2, size, size)) painter.end() #painter ellipse 2 painter2 = QPainter() painter2.begin(pixmap) painter2.setRenderHint(QPainter.Antialiasing) pen2 = QPen(Qt.green) pen2.setWidth(1) painter2.setPen(pen2) painter2.drawEllipse(QRect(self.width()/2 - size/2, self.height()/2 - size/2, size, size)) painter2.end() self.ellipseLabel.setPixmap(QPixmap(pixmap)) self.lastSize = s
def setNameAndBrush(self, sigma, color=Qt.black): self.sigma = sigma self.setText( decode_to_qstring("σ=%.1fpx" % self.sigma, "utf-8") ) # This file is encoded as utf-8, so this string should be decoded as such. total_window = 1 + 2 * int(self.sigma * self.window_size + 0.5) self.setToolTip("sigma = {:.1f} pixels, window diameter = {:.1f}".format(self.sigma, total_window)) font = QFont() font.setPointSize(10) font.setBold(True) self.setFont(font) self.setForeground(color) pixmap = QPixmap(self.pixmapSize) pixmap.fill(Qt.transparent) painter = QPainter() painter.begin(pixmap) painter.setRenderHint(QPainter.Antialiasing, True) painter.setPen(color) brush = QBrush(color) painter.setBrush(brush) painter.drawEllipse( QRect( self.pixmapSize.width() / 2 - self.brushSize / 2, self.pixmapSize.height() / 2 - self.brushSize / 2, self.brushSize, self.brushSize, ) ) painter.end() self.setIcon(QIcon(pixmap)) self.setTextAlignment(Qt.AlignVCenter)
def _renderedImage2(self, width, height, extent, transp_background=False, layerids=None): antialias = True if self._renderer is None: self._initRenderer() canvas = self.context.canvas if layerids is None: layerids = [mapLayer.id() for mapLayer in canvas.layers()] renderer = self._renderer renderer.setLayerSet(layerids) image = QImage(width, height, QImage.Format_ARGB32_Premultiplied) if transp_background: image.fill(QColor(Qt.transparent).rgba()) # else: image.fill(canvas.canvasColor().rgba()) # renderer.setOutputSize(image.size(), image.logicalDpiX()) renderer.setExtent(extent.unrotatedRect()) painter = QPainter() painter.begin(image) if antialias: painter.setRenderHint(QPainter.Antialiasing) renderer.render(painter) painter.end() return tools.base64image(image)
def drawROIBoxes(self, image): #print(self.frame_data) if not isinstance(self.frame_data, pd.DataFrame) or len(self.frame_data) == 0 \ or not self.label_type in self.frame_data: return self.img_h_ratio = image.height() / self.image_height self.img_w_ratio = image.width() / self.image_width painter = QPainter() painter.begin(image) for row_id, row_data in self.frame_data.iterrows(): x = row_data['coord_x'] * self.img_h_ratio y = row_data['coord_y'] * self.img_w_ratio #check if the coordinates are nan if not (x == x) or not (y == y): continue x = int(x) y = int(y) c = self.wlabC[int(row_data[self.label_type])] painter.setPen(c) painter.setFont(QFont('Decorative', 10)) painter.drawText(x, y, str(int(row_data[self.worm_index_type]))) bb = row_data['roi_size'] * self.img_w_ratio painter.drawRect(x - bb / 2, y - bb / 2, bb, bb) painter.end()
def draw_image(name, q): image = QSvgGenerator() image.setSize(QSize(IMAGE_SIZE, IMAGE_SIZE)) image.setFileName(name + ".svg") painter = QPainter() painter.begin(image) painter.setBrush(Qt.white) painter.setPen(Qt.NoPen) painter.drawEllipse(QPointF(IMAGE_SIZE/2, IMAGE_SIZE/2), IMAGE_SIZE/2, IMAGE_SIZE/2) painter.setBrush(QBrush()) painter.setPen(QPen()) draw_defect(painter, q) draw_circle(painter, q) pen = QPen() pen.setWidth(7) pen.setColor(Qt.red) painter.setPen(pen) painter.drawLine(IMAGE_SIZE/2 - ARROW_SIZE, IMAGE_SIZE/2, IMAGE_SIZE/2 + ARROW_SIZE, IMAGE_SIZE/2) painter.drawLine(IMAGE_SIZE/2 + ARROW_SIZE, IMAGE_SIZE/2, IMAGE_SIZE/2 + ARROW_SIZE - 30, IMAGE_SIZE/2 + 20) painter.drawLine(IMAGE_SIZE/2 + ARROW_SIZE, IMAGE_SIZE/2, IMAGE_SIZE/2 + ARROW_SIZE - 30, IMAGE_SIZE/2 - 20) font = painter.font() font.setPixelSize(40) font.setBold(True) painter.setFont(font) painter.drawText(QPointF(IMAGE_SIZE/2 + ARROW_SIZE - 30, IMAGE_SIZE/2 - 30), "E") painter.end()
def save_image(): try: page = web.page() frame = page.currentFrame() # Grow the viewport to make it fit the whole document width = min_width height = min_height page.setViewportSize(QSize(width, height)) while frame.scrollBarMaximum(Qt.Horizontal) != 0: width += 1 page.setViewportSize(QSize(width, height)) while frame.scrollBarMaximum(Qt.Vertical) != 0: height += 1 page.setViewportSize(QSize(width, height)) # Render the document to an image file image = QPixmap(width, height) painter = QPainter() painter.begin(image) frame.render(painter) painter.end() image.save(dest, format, quality) finally: QApplication.exit()
def rerender_pdf_image(self): if self.ratio > RATIO_MIN: self.pdf_image = self.page1.renderToImage(PDF_BASE_RESOLUTION / self.ratio, PDF_BASE_RESOLUTION / self.ratio, self.x, self.y, self.w, self.h) else: # image1 = self.page1.renderToImage(PDF_BASE_RESOLUTION / self.ratio, # PDF_BASE_RESOLUTION / self.ratio, # self.x, self.y, self.w, self.h) # image2 = self.page2.renderToImage(PDF_BASE_RESOLUTION, # / self.ratio, # PDF_BASE_RESOLUTION # / self.ratio, # ) # # self.x, self.y, self.w, self.h) self.pdf_image = QImage(self.w, self.h, self.image1.format()) self.pdf_image.fill(QtCore.Qt.white) painter = QPainter() painter.begin(self.pdf_image) painter.drawImage(self.pdf_image.rect(), self.image1, QRect(self.x * self.ratio/self.begin_ratio, self.y * self.ratio/self.begin_ratio, self.w * self.ratio/self.begin_ratio, self.h * self.ratio/self.begin_ratio)) painter.end() x1 = MAGIC_RECT.x() / self.ratio - self.x y1 = MAGIC_RECT.y() / self.ratio - self.y h1 = MAGIC_RECT.height() / self.ratio w1 = MAGIC_RECT.width() / self.ratio
def drawIcon(self, colorRamp): # input color ramp object: QgsVectorColorRampV2 object. # QgsVectorColorRampV2 is a virtual object, the real object name in # this case is QgsVectorGradientColorRampV2 object. mStops = colorRamp.stops() linearGradient = QLinearGradient(0.0, 50.0, 200.0, 50.0) for item in mStops: linearGradient.setColorAt(item.offset, item.color) linearGradient.setSpread(QGradient.PadSpread) svgName = os.path.join(os.path.dirname(__file__), self.text() + '.svg') pix = QSvgGenerator() pix.setFileName(svgName) pix.setSize(QSize(200, 100)) painter = QPainter() painter.begin(pix) br = QBrush(linearGradient) painter.setBrush(br) painter.drawRect(QRect(0, 0, 200, 100)) painter.end() pixmap = QPixmap(svgName) icon = QIcon(pixmap) self.svgName = svgName return icon
def paintEvent(self, event): """ Overloads the paint event to draw rounded edges on this widget. :param event | <QPaintEvent> """ super(XRolloutItem, self).paintEvent(event) painter = QPainter() painter.begin(self) w = self.width() - 3 h = self.height() - 3 color = self.palette().color(QPalette.Midlight) color = color.darker(180) pen = QPen(color) pen.setWidthF(0.5) painter.setPen(pen) painter.setBrush(self.palette().color(QPalette.Midlight)) painter.setRenderHint(QPainter.Antialiasing) painter.drawRoundedRect(1, 1, w, h, 10, 10) painter.end()
def paintEvent( self, event ): """ Overloads the paint event to draw rounded edges on this widget. :param event | <QPaintEvent> """ super(XRolloutItem, self).paintEvent(event) painter = QPainter() painter.begin(self) w = self.width() - 3 h = self.height() - 3 color = self.palette().color(QPalette.Midlight) color = color.darker(180) pen = QPen(color) pen.setWidthF(0.5) painter.setPen(pen) painter.setBrush(self.palette().color(QPalette.Midlight)) painter.setRenderHint(QPainter.Antialiasing) painter.drawRoundedRect(1, 1, w, h, 10, 10) painter.end()
def paintEvent(self, event): """ Overloads the paint event to handle painting pointers for the popup \ mode. :param event | <QPaintEvent> """ # use the base technique for the dialog mode if self.currentMode() == XPopupWidget.Mode.Dialog: super(XPopupWidget, self).paintEvent(event) return # setup the coloring options palette = self.palette() painter = QPainter() painter.begin(self) pen = QPen(palette.color(palette.Window).darker(130)) pen.setWidthF(1.75) painter.setPen(pen) painter.setRenderHint(painter.Antialiasing) painter.setBrush(palette.color(palette.Window)) painter.drawPath(self.borderPath()) painter.end()
def basefinished(self): if self.basereply.error() != QNetworkReply.NoError: return self.basepixmap = QPixmap() self.basepixmap.loadFromData(self.basereply.readAll()) if self.basepixmap.size() != self.rect.size(): self.basepixmap = self.basepixmap.scaled(self.rect.size(), Qt.KeepAspectRatio, Qt.SmoothTransformation) self.setPixmap(self.basepixmap) # make marker pixmap self.mkpixmap = QPixmap(self.basepixmap.size()) self.mkpixmap.fill(Qt.transparent) br = QBrush(QColor(Config.dimcolor)) painter = QPainter() painter.begin(self.mkpixmap) painter.fillRect(0, 0, self.mkpixmap.width(), self.mkpixmap.height(), br) for marker in self.radar['markers']: if 'visible' not in marker or marker['visible'] == 1: pt = getPoint(marker["location"], self.point, self.zoom, self.rect.width(), self.rect.height()) mk2 = QImage() mkfile = 'teardrop' if 'image' in marker: mkfile = marker['image'] if os.path.dirname(mkfile) == '': mkfile = os.path.join('markers', mkfile) if os.path.splitext(mkfile)[1] == '': mkfile += '.png' mk2.load(mkfile) if mk2.format != QImage.Format_ARGB32: mk2 = mk2.convertToFormat(QImage.Format_ARGB32) mkh = 80 # self.rect.height() / 5 if 'size' in marker: if marker['size'] == 'small': mkh = 64 if marker['size'] == 'mid': mkh = 70 if marker['size'] == 'tiny': mkh = 40 if 'color' in marker: c = QColor(marker['color']) (cr, cg, cb, ca) = c.getRgbF() for x in range(0, mk2.width()): for y in range(0, mk2.height()): (r, g, b, a) = QColor.fromRgba(mk2.pixel(x, y)).getRgbF() r = r * cr g = g * cg b = b * cb mk2.setPixel(x, y, QColor.fromRgbF(r, g, b, a).rgba()) mk2 = mk2.scaledToHeight(mkh, 1) painter.drawImage(pt.x - mkh / 2, pt.y - mkh / 2, mk2) painter.end() self.wmk.setPixmap(self.mkpixmap)
def updateFilledCircle(self, s): size = s * self.zoom pixmap = QPixmap(self.width(), self.height()) pixmap.fill(Qt.transparent) #painter filled ellipse p = QPalette() painter = QPainter() painter.begin(pixmap) painter.setRenderHint(QPainter.Antialiasing) brush = QBrush(p.link().color()) painter.setBrush(brush) painter.setOpacity(0.4) painter.drawEllipse( QRect(self.width() / 2 - size / 2, self.height() / 2 - size / 2, size, size)) painter.end() #painter ellipse 2 painter2 = QPainter() painter2.begin(pixmap) painter2.setRenderHint(QPainter.Antialiasing) pen2 = QPen(Qt.green) pen2.setWidth(1) painter2.setPen(pen2) painter2.drawEllipse( QRect(self.width() / 2 - size / 2, self.height() / 2 - size / 2, size, size)) painter2.end() self.ellipseLabel.setPixmap(QPixmap(pixmap)) self.lastSize = s
def paintEvent(self, event): MARGIN_PIXELS = 4 painter = QPainter() (r, g, b, alpha) = ImageUtils.rbgaTointValues(self.log.rgb, self.log.alpha) lineColour = QColor(r, g, b, alpha) assert lineColour != None assert self.log.line_style != None lineStyle = WidgetUtils.getQtPenStyle(self.log.line_style) assert lineStyle != None assert self.log.line_width != None lineWidth = NumberUtils.floatToIntDefault(self.log.line_width, 1) pen = QPen(lineColour, lineWidth, lineStyle) painter.begin(self) painter.setPen(pen) labelMargin = self.logName_label.margin() yLevel = self.logName_label.rect().bottomLeft().y() xStart = labelMargin xStop = self.track.geometry().width() - labelMargin #line is relative to widget not screen painter.drawLine(xStart, yLevel, xStop, yLevel) painter.end()
def drawROIBoxes(self, image): #print(self.frame_data) if not isinstance(self.frame_data, pd.DataFrame) or len(self.frame_data) == 0 \ or not self.label_type in self.frame_data: return self.img_h_ratio = image.height()/self.image_height; self.img_w_ratio = image.width()/self.image_width; painter = QPainter() painter.begin(image) for row_id, row_data in self.frame_data.iterrows(): x = row_data['coord_x']*self.img_h_ratio y = row_data['coord_y']*self.img_w_ratio #check if the coordinates are nan if not (x == x) or not (y == y): continue x = int(x) y = int(y) c = self.wlabC[int(row_data[self.label_type])] painter.setPen(c) painter.setFont(QFont('Decorative', 10)) painter.drawText(x, y, str(int(row_data[self.worm_index_type]))) bb = row_data['roi_size']*self.img_w_ratio painter.drawRect(x-bb/2, y-bb/2, bb, bb); painter.end()
def updateCircle(self, s): size = s * self.zoom pixmap = QPixmap(self.width(), self.height()) pixmap.fill(Qt.transparent) #painter ellipse 1 painter = QPainter() painter.begin(pixmap) painter.setRenderHint(QPainter.Antialiasing) pen = QPen(Qt.red) pen.setWidth(3) painter.setPen(pen) brush = QBrush(Qt.green) painter.setBrush(brush) painter.drawEllipse( QRect(self.width() / 2 - size / 2, self.height() / 2 - size / 2, size, size)) painter.end() #painter ellipse 2 painter2 = QPainter() painter2.begin(pixmap) painter2.setRenderHint(QPainter.Antialiasing) pen2 = QPen(Qt.green) pen2.setStyle(Qt.DotLine) pen2.setWidth(3) painter2.setPen(pen2) painter2.drawEllipse( QRect(self.width() / 2 - size / 2, self.height() / 2 - size / 2, size, size)) painter2.end() self.ellipseLabel.setPixmap(QPixmap(pixmap)) self.lastSize = s
def renderedImage(self, width, height, extent, transp_background=False, layerids=None): if QGis.QGIS_VERSION_INT < 20700: return self._renderedImage2(width, height, extent, transp_background, layerids) from qgis.core import QgsMapRendererCustomPainterJob antialias = True # render map image with QgsMapRendererCustomPainterJob settings = self.context.canvas.mapSettings() settings.setOutputSize(QSize(width, height)) settings.setExtent(extent.unrotatedRect()) settings.setRotation(extent.rotation()) if layerids: settings.setLayers(layerids) if transp_background: settings.setBackgroundColor(QColor(Qt.transparent)) #else: #TODO: remove #settings.setBackgroundColor(self.context.canvas.canvasColor()) image = QImage(width, height, QImage.Format_ARGB32_Premultiplied) painter = QPainter() painter.begin(image) if antialias: painter.setRenderHint(QPainter.Antialiasing) job = QgsMapRendererCustomPainterJob(settings, painter) job.start() job.waitForFinished() painter.end() return tools.base64image(image)
def exportAsImage(self): filename = unicode( QFileDialog.getSaveFileName(self, self.tr('Save Model As Image'), '', self.tr('PNG files (*.png *.PNG)'))) if not filename: return if not filename.lower().endswith('.png'): filename += '.png' totalRect = QRectF(0, 0, 1, 1) for item in self.scene.items(): totalRect = totalRect.united(item.sceneBoundingRect()) totalRect.adjust(-10, -10, 10, 10) img = QImage(totalRect.width(), totalRect.height(), QImage.Format_ARGB32_Premultiplied) img.fill(Qt.white) painter = QPainter() painter.setRenderHint(QPainter.Antialiasing) painter.begin(img) self.scene.render(painter, totalRect, totalRect) painter.end() img.save(filename)
def paintEvent( self, event): painter = QPainter( ) painter.begin(self) [S.draw(painter) for S in self.spriteList] self.boundary.draw(painter) painter.end( )
def paintEvent(self, evt): # get the widget dimensions orig_width = self.width() orig_height = self.height() # fill perc % of the widget perc = 1 width = int(orig_width * perc) height = int(orig_height * perc) # get the starting origin x_orig = int((orig_width - width) / 2) # we want to start at the bottom and draw up. y_orig = orig_height - int((orig_height - height) / 2) # a running x-position running_pos = x_orig # calculate to number of bars nbars = len(self.counts) # calculate the bar widths, this compilcation is # necessary because integer trunction severly cripples # the layout. remainder = width % nbars bar_width = [int(width / nbars)] * nbars for i in range(remainder): bar_width[i] += 1 paint = QPainter() paint.begin(self) # determine the scaling factor max_val = np.max(self.counts) scale = 1. * height / max_val # determine if we have a colormap and drop into the appopriate # loop. if hasattr(self.colormap[0], '__iter__'): # assume we have a colormap for i in range(len(self.counts)): bar_height = self.counts[i] r, g, b = self.colormap[i] paint.setPen(QColor(r, g, b)) paint.setBrush(QColor(r, g, b)) paint.drawRect(running_pos, y_orig, bar_width[i], -bar_height) running_pos += bar_width[i] else: # we have a tuple r, g, b = self.colormap paint.setPen(QColor(r, g, b)) paint.setBrush(QColor(r, g, b)) for i in range(len(self.counts)): bar_height = self.counts[i] * scale paint.drawRect(running_pos, y_orig, bar_width[i], -bar_height) running_pos += bar_width[i] paint.end()
def paintEvent(self, evt): # get the widget dimensions orig_width = self.width() orig_height = self.height() # fill perc % of the widget perc = 1 width = int(orig_width * perc) height = int(orig_height * perc) # get the starting origin x_orig = int((orig_width - width) / 2) # we want to start at the bottom and draw up. y_orig = orig_height - int((orig_height - height) / 2) # a running x-position running_pos = x_orig # calculate to number of bars nbars = len(self.counts) # calculate the bar widths, this compilcation is # necessary because integer trunction severly cripples # the layout. remainder = width % nbars bar_width = [int(width / nbars)] * nbars for i in range(remainder): bar_width[i] += 1 paint = QPainter() paint.begin(self) # determine the scaling factor max_val = np.max(self.counts) scale = 1.0 * height / max_val # determine if we have a colormap and drop into the appopriate # loop. if hasattr(self.colormap[0], "__iter__"): # assume we have a colormap for i in range(len(self.counts)): bar_height = self.counts[i] r, g, b = self.colormap[i] paint.setPen(QColor(r, g, b)) paint.setBrush(QColor(r, g, b)) paint.drawRect(running_pos, y_orig, bar_width[i], -bar_height) running_pos += bar_width[i] else: # we have a tuple r, g, b = self.colormap paint.setPen(QColor(r, g, b)) paint.setBrush(QColor(r, g, b)) for i in range(len(self.counts)): bar_height = self.counts[i] * scale paint.drawRect(running_pos, y_orig, bar_width[i], -bar_height) running_pos += bar_width[i] paint.end()
def __setProgressPixmapInactive(self, pixmap): alpha = pixmap.alphaChannel() painter = QPainter() painter.begin(alpha) painter.setBrush(QBrush(QColor(0, 0, 0, 196))) painter.drawRect(pixmap.rect()) painter.end() pixmap.setAlphaChannel(alpha)
def saveSprites(folder, sprites): if sprites: height = max([s.height() for s, s2x in sprites.values()]) width = sum([s.width() for s, s2x in sprites.values()]) img = QImage(width, height, QImage.Format_ARGB32) img.fill(QColor(Qt.transparent)) img2x = QImage(width * 2, height * 2, QImage.Format_ARGB32) img2x.fill(QColor(Qt.transparent)) painter = QPainter(img) painter.begin(img) painter2x = QPainter(img2x) painter2x.begin(img2x) spritesheet = { NO_ICON: { "width": 0, "height": 0, "x": 0, "y": 0, "pixelRatio": 1 } } spritesheet2x = { NO_ICON: { "width": 0, "height": 0, "x": 0, "y": 0, "pixelRatio": 1 } } x = 0 for name, sprites in sprites.iteritems(): s, s2x = sprites painter.drawImage(x, 0, s) painter2x.drawImage(x * 2, 0, s2x) spritesheet[name] = { "width": s.width(), "height": s.height(), "x": x, "y": 0, "pixelRatio": 1 } spritesheet2x[name] = { "width": s2x.width(), "height": s2x.height(), "x": x * 2, "y": 0, "pixelRatio": 2 } x += s.width() painter.end() painter2x.end() img.save(os.path.join(folder, "spriteSheet.png")) img2x.save(os.path.join(folder, "*****@*****.**")) with open(os.path.join(folder, "spriteSheet.json"), 'w') as f: json.dump(spritesheet, f) with open(os.path.join(folder, "*****@*****.**"), 'w') as f: json.dump(spritesheet2x, f)
def drawDay(xy, txt): painter = QPainter() painter.begin(qt_im) painter.setFont(QtGui.QFont('Helvetica', 50)) painter.setPen(QPen(QtCore.Qt.gray)) x0, y0 = xy painter.drawText(x0, y0, txt) painter.end()
def saveExtra(self, picture, file_name, file_format): rect = picture.boundingRect() pix = QImage(rect.size(), QImage.Format_ARGB32) pix.fill(QColor(0, 0, 0, 0).rgba()) paint = QPainter() paint.begin(pix) paint.drawPicture(rect.topLeft() * -1, picture) paint.end() pix.save(file_name, file_format)
def paintEvent(self, event): super(Editor, self).paintEvent(event) if settings.SHOW_MARGIN_LINE: painter = QPainter() painter.begin(self.viewport()) painter.setPen(QColor('#FE9E9A')) offset = self.contentOffset() painter.drawLine(self.pos_margin + offset.x(), 0, \ self.pos_margin + offset.x(), self.viewport().height()) painter.end()
def paintEvent(self, event): qp = QPainter() qp.begin(self) qp.setPen(self.color) qp.setBrush(self.color) d = min(self.height(), self.width()) - self.table_padding qp.drawEllipse(self.width() // 2 - d // 2, self.height() // 2 - d // 2, d, d) qp.end()
def paintEvent(self, event): qp = QPainter() qp.begin(self) qp.setBrush(self.gradient) qp.setPen(Qt.transparent) qp.drawRect(0, 0, self.SIZE_X, self.SIZE_Y) qp.setBrush(QBrush(Qt.red)) qp.setPen(Qt.red) qp.drawLine(0, self.reflectivity, self.SIZE_X, self.reflectivity) qp.end()
def paintEvent(self, event): painter = QPainter() painter.begin(self) painter.setRenderHint(QPainter.Antialiasing) painter.fillRect(event.rect(), self.palette().brush(QPalette.Window)) self.drawMarkings(painter) self.drawNeedle(painter) self.drawNeedle2(painter) painter.end()
def drawLabel(start, end, txt): painter = QPainter() painter.begin(qt_im) painter.setFont(QtGui.QFont('Helvetica', 30)) painter.setPen(QPen(QtCore.Qt.blue)) x0, y0 = start x1, y1 = end painter.drawText((x0 + x1)/2, y0 - 20, txt) painter.end()
def paintEvent(self, event): qp = QPainter() qp.begin(self) qp.setBrush(QBrush(self.color)) qp.setPen(self.color) qp.drawRect(0, 0, 25, 25) qp.setBrush(Qt.NoBrush) qp.setPen(Qt.black) qp.drawRect(1, 1, 24, 24) qp.end()
def paintEvent(self, event): """Paint over the widget to overlay its content.""" if not ACTIVATE_OPACITY: painter = QPainter() painter.begin(self) painter.setRenderHint(QPainter.TextAntialiasing, True) painter.setRenderHint(QPainter.Antialiasing, True) painter.fillRect(event.rect(), QBrush(QColor(255, 255, 255, 80))) painter.setPen(QPen(Qt.NoPen)) painter.end() super(SliderArea, self).paintEvent(event)
def drawPixmapForUnckecked(self): self.pixmapUnckecked = QPixmap(self.itemWidth, self.itemHeight) self.pixmapUnckecked.fill(Qt.transparent) painter = QPainter() painter.begin(self.pixmapUnckecked) painter.setRenderHint(QPainter.Antialiasing) pen = QPen() pen.setWidth(2) painter.setPen(pen) painter.drawRect(QRect(5,5,self.itemWidth-10, self.itemHeight-10)) painter.end()