def __init__( self, screen, num_particles, pos, pos_irange, vel, vel_irange, duration, duration_irange, color_seq, quad_sz, img_path, ): self.screen = screen self.num_particles = num_particles self.setup_texture(img_path) # self.setup_display_list(quad_sz) self.particles = set() rect = QRectF(0.0, 0.0, quad_sz, quad_sz) rect.moveCenter(QPointF(0.0, 0.0)) for i in xrange(self.num_particles): pos = apply_irange(pos, pos_irange) vel = apply_irange(vel, vel_irange) duration = duration + uniform(*duration_irange) # p = Particle(pos, vel, color_seq, self.display_list, duration) p = Particle(pos, vel, color_seq, (self.texture, rect, self.screen.qpainter), duration) self.particles.add(p)
def paintEvent(self, event): crect = self.rect() painter = QPainter(self) painter.setRenderHint(QPainter.Antialiasing) painter.setBrush(QBrush(Qt.white)) painter.setPen(QPen(Qt.lightGray, 1.2)) painter.drawRoundedRect(QRectF(crect).adjusted(2, 2, -2, -2), 2, 2, Qt.AbsoluteSize) if self._selected: painter.setPen(QPen(QBrush(Qt.red), 2)) if self._highlighted: painter.setBrush(QBrush(Qt.gray, Qt.FDiagPattern)) else: painter.setBrush(Qt.NoBrush) painter.drawRoundedRect(QRectF(crect).adjusted(2, 2, -2, -2), 2, 2, Qt.AbsoluteSize) defsize = self.renderer().defaultSize() margin = 5 bound = QSize(defsize) bound.scale(crect.width() - margin, crect.height() - margin, Qt.KeepAspectRatio) svgrect = QRectF(0, 0, bound.width(), bound.height()) svgrect.moveCenter(crect.center()) self.renderer().render(painter, svgrect)
def paintEvent(self, event): crect = self.rect() painter = QPainter(self) painter.setRenderHint(QPainter.Antialiasing) painter.setBrush(QBrush(Qt.white)) painter.setPen(QPen(Qt.lightGray, 1.2)) painter.drawRoundedRect( QRectF(crect).adjusted(2, 2, -2, -2), 2, 2, Qt.AbsoluteSize) if self._selected: painter.setPen(QPen(QBrush(Qt.red), 2)) if self._highlighted: painter.setBrush(QBrush(Qt.gray, Qt.FDiagPattern)) else: painter.setBrush(Qt.NoBrush) painter.drawRoundedRect( QRectF(crect).adjusted(2, 2, -2, -2), 2, 2, Qt.AbsoluteSize) defsize = self.renderer().defaultSize() margin = 5 bound = QSize(defsize) bound.scale(crect.width() - margin, crect.height() - margin, Qt.KeepAspectRatio) svgrect = QRectF(0, 0, bound.width(), bound.height()) svgrect.moveCenter(crect.center()) self.renderer().render(painter, svgrect)
def paintEvent(self, event=None): font = QFont(self.font()) font.setPointSize(font.pointSize() - 1) fm = QFontMetricsF(font) fracWidth = fm.width(FractionSlider.WSTRING) indent = fm.boundingRect("9").width() / 2.0 if not X11: fracWidth *= 1.5 span = self.width() - (FractionSlider.XMARGIN * 2) value = self.__numerator / float(self.__denominator) painter = QPainter(self) painter.setRenderHint(QPainter.Antialiasing) painter.setRenderHint(QPainter.TextAntialiasing) painter.setPen(self.palette().color(QPalette.Mid)) painter.setBrush(self.palette().brush( QPalette.AlternateBase)) painter.drawRect(self.rect()) segColor = QColor(Qt.green).dark(120) segLineColor = segColor.dark() painter.setPen(segLineColor) painter.setBrush(segColor) painter.drawRect(FractionSlider.XMARGIN, FractionSlider.YMARGIN, span, fm.height()) textColor = self.palette().color(QPalette.Text) segWidth = span / self.__denominator segHeight = fm.height() * 2 nRect = fm.boundingRect(FractionSlider.WSTRING) x = FractionSlider.XMARGIN yOffset = segHeight + fm.height() for i in range(self.__denominator + 1): painter.setPen(segLineColor) painter.drawLine(x, FractionSlider.YMARGIN, x, segHeight) painter.setPen(textColor) y = segHeight rect = QRectF(nRect) rect.moveCenter(QPointF(x, y + fm.height() / 2.0)) painter.drawText(rect, Qt.AlignCenter, QString.number(i)) y = yOffset rect.moveCenter(QPointF(x, y + fm.height() / 2.0)) painter.drawText(rect, Qt.AlignCenter, QString.number(self.__denominator)) painter.drawLine(QPointF(rect.left() + indent, y), QPointF(rect.right() - indent, y)) x += segWidth span = int(span) y = FractionSlider.YMARGIN - 0.5 triangle = [QPointF(value * span, y), QPointF((value * span) + (2 * FractionSlider.XMARGIN), y), QPointF((value * span) + FractionSlider.XMARGIN, fm.height())] painter.setPen(Qt.yellow) painter.setBrush(Qt.darkYellow) painter.drawPolygon(QPolygonF(triangle))
def setCenter(self, lon, lat): """Move the center of the visible area to new coordinates. Update the scene rect. Args: lon(float): New longitude of the center. lat(float): New latitude of the center. """ rect = QRectF(self.sceneRect()) pos = self.posFromLonLat(lon, lat) rect.moveCenter(pos) self.setSceneRect(rect)
def paintEvent(self, event): if self.__pixmap.isNull(): return sourcerect = QRect(QPoint(0, 0), self.__pixmap.size()) pixsize = QSizeF(self.__pixmap.size()) rect = self.contentsRect() pixsize.scale(QSizeF(rect.size()), Qt.KeepAspectRatio) targetrect = QRectF(QPointF(0, 0), pixsize) targetrect.moveCenter(QPointF(rect.center())) painter = QPainter(self) painter.setRenderHint(QPainter.SmoothPixmapTransform) painter.drawPixmap(targetrect, self.__pixmap, QRectF(sourcerect)) painter.end()
def grab_svg(scene): """ Return a SVG rendering of the scene contents. Parameters ---------- scene : :class:`CanvasScene` """ from PyQt4.QtSvg import QSvgGenerator svg_buffer = QBuffer() gen = QSvgGenerator() gen.setOutputDevice(svg_buffer) items_rect = scene.itemsBoundingRect().adjusted(-10, -10, 10, 10) if items_rect.isNull(): items_rect = QRectF(0, 0, 10, 10) width, height = items_rect.width(), items_rect.height() rect_ratio = float(width) / height # Keep a fixed aspect ratio. aspect_ratio = 1.618 if rect_ratio > aspect_ratio: height = int(height * rect_ratio / aspect_ratio) else: width = int(width * aspect_ratio / rect_ratio) target_rect = QRectF(0, 0, width, height) source_rect = QRectF(0, 0, width, height) source_rect.moveCenter(items_rect.center()) gen.setSize(target_rect.size().toSize()) gen.setViewBox(target_rect) painter = QPainter(gen) # Draw background. painter.setBrush(QBrush(Qt.white)) painter.drawRect(target_rect) # Render the scene scene.render(painter, target_rect, source_rect) painter.end() buffer_str = str(svg_buffer.buffer()) return unicode(buffer_str.decode("utf-8"))
def Path_toQtPath(geom): p = QPainterPath() anchor, points = geom if len(points) > 1: p.moveTo(*points[0]) for (x, y) in points[1:]: p.lineTo(x, y) elif len(points) == 1: r = QRectF(0, 0, 1e-0, 1e-9) r.moveCenter(*points[0]) p.addRect(r) elif len(points) == 0: r = QRectF(0, 0, 1e-16, 1e-16) r.moveCenter(QPointF(*anchor)) p.addRect(r) return p
def paint(self, painter, option, widget=0): if self._pixmap.isNull(): return rect = self.contentsRect() pixsize = self.pixmapSize() pixrect = QRectF(QPointF(0, 0), pixsize) pixrect.moveCenter(rect.center()) painter.save() painter.setPen(QPen(QColor(0, 0, 0, 50), 3)) painter.drawRoundedRect(pixrect, 2, 2) painter.setRenderHint(QPainter.SmoothPixmapTransform) source = QRectF(QPointF(0, 0), QSizeF(self._pixmap.size())) painter.drawPixmap(pixrect, self._pixmap, source) painter.restore()
def drawToolButtonContent(self, option, painter, widget): if option.state & QStyle.State_Enabled: pixmap = widget.pixmap(QIcon.Normal) else: pixmap = widget.pixmap(QIcon.Disabled) if not pixmap.isNull(): margin = self._pixel_metrics[QStyle.PM_DefaultFrameWidth] + self._pixel_metrics[QStyle.PM_ButtonMargin] if option.features & QStyleOptionToolButton.MenuButtonPopup and option.direction == Qt.LeftToRight: right_offset = 1 else: right_offset = 0 content_rect = QRectF(self.proxy().subControlRect(QStyle.CC_ToolButton, option, QStyle.SC_ToolButton, widget)).adjusted(margin, margin, -margin-right_offset, -margin) pixmap_rect = QRectF(pixmap.rect()) pixmap_rect.moveCenter(content_rect.center()) painter.setRenderHint(QPainter.Antialiasing, True) painter.setCompositionMode(QPainter.CompositionMode_SourceOver) painter.drawPixmap(pixmap_rect.topLeft(), pixmap)
def paint(self, painter, option, widget=0): if self._pixmap.isNull(): return rect = self.contentsRect() pixsize = QSizeF(self._pixmap.size()) aspectmode = (Qt.KeepAspectRatio if self._keepAspect else Qt.IgnoreAspectRatio) pixsize.scale(rect.size(), aspectmode) pixrect = QRectF(QPointF(0, 0), pixsize) pixrect.moveCenter(rect.center()) painter.save() painter.setPen(QPen(QColor(0, 0, 0, 50), 3)) painter.drawRoundedRect(pixrect, 2, 2) painter.setRenderHint(QPainter.SmoothPixmapTransform) source = QRectF(QPointF(0, 0), QSizeF(self._pixmap.size())) painter.drawPixmap(pixrect, self._pixmap, source) painter.restore()
def __init__(self, screen, num_particles, pos, pos_irange, vel, vel_irange, duration, duration_irange, color_seq, quad_sz, img_path): self.screen = screen self.num_particles = num_particles self.setup_texture(img_path) #self.setup_display_list(quad_sz) self.particles = set() rect = QRectF(0.,0.,quad_sz,quad_sz) rect.moveCenter(QPointF(0.,0.)) for i in xrange(self.num_particles): pos = apply_irange(pos, pos_irange) vel = apply_irange(vel, vel_irange) duration = duration + uniform(*duration_irange) #p = Particle(pos, vel, color_seq, self.display_list, duration) p = Particle(pos, vel, color_seq, (self.texture, rect, self.screen.qpainter), duration) self.particles.add(p)
def paint_mass(self, painter): rect = QRectF(0, 0, 0.07, 0.07) rect.moveCenter(QPointF(0, 0)) painter.fillRect(rect, QColor(200, 200, 0))
def paint_track(self, painter): rect = QRectF(0, 0, 4.0, 0.05) rect.moveCenter(QPointF(0, 0)) painter.fillRect(rect, QColor(100, 100, 100))
def paint_mass(self, painter): rect = QRectF(0, 0, 0.07, 0.07) rect.moveCenter(QPointF(0,0)) painter.fillRect(rect, QColor(200, 200, 0))
def paint_track(self, painter): rect = QRectF(0, 0, 4.0, 0.05) rect.moveCenter(QPointF(0,0)) painter.fillRect(rect, QColor(100, 100, 100))