[Interest] Scaling out of SVG in QGraphicsScene background

Felix Rubio Dalmau felix at kngnt.org
Wed Feb 27 07:37:58 CET 2019


Hi Christian,

	Thank you for answering. Already tried that, but no luck. Seems as if I have to manually handle the scaling out and low-pass filtering of the image and so.... I do not know, seems weird.

	Regards,
	Felix

On dimarts, 26 de febrer de 2019 3:00:50 CET Christian Gagneraud wrote:
> On Mon, 25 Feb 2019 at 19:18, Felix Rubio Dalmau via Interest
> <interest at qt-project.org> wrote:
> >
> > Hi all,
> >
> >         I am trying to paint a SVG I have on a file on the background of a QGraphicsScene, and I am facing some issues: if I subclass QGraphicsScene and in the __init__ method I add:
> >
> >                 self.target = QtSvg.QGraphicsSvgItem(target)
> >                 rect = self.target.boundingRect()
> >                 self.target.setPos(-rect.width()/2, -rect.height()/2)
> >                 self.addItem(self.target)
> >
> >         So that then in my main window I set the QGraphicsView to do a fitInView (the size of the widget is 500x500), via
> >
> >                 self.ui.targetView.fitInView(self.scene.sceneRect(), QtCore.Qt.KeepAspectRatio)
> >
> >         The result is what expected: a nice, smooth image.
> >
> >         However, if I try to draw the SVG on the background of the QGraphicsScene, via:
> >
> >                 self.renderer = QtSvg.QSvgRenderer(target)
> >                 rect = self.renderer.defaultSize()
> >                 self.image = QtGui.QImage(rect, QtGui.QImage.Format_ARGB32)
> >                 self.painter = QtGui.QPainter(self.image)
> >                 self.renderer.render(self.painter)
> >                 self.setBackgroundBrush(QtGui.QBrush(self.image))
> >                 self.setSceneRect(QtCore.QRectF(QtCore.QPointF(0, 0), QtCore.QSizeF(self.image.size())))
> >
> >         Without doing the scaling the picture looks OK, but after doing the scaling the picture looks pixelized. How can I fix that?
> >         Also, I have observed that I have to set the scene rectangle, while I understood that the scene itself would take care of that?
> 
> Maybe you have a caching issue, see
> https://doc.qt.io/qt-5/qgraphicsview.html#cacheMode-prop
> Maybe as well https://doc.qt.io/qt-5/qgraphicsscene.html#invalidate could help
> 
> Chris
> 
> >
> >         Thank you for your help!
> >         Felix
> >
> >         PS: for reference, the picture is https://upload.wikimedia.org/wikipedia/commons/1/17/WA_80_cm_archery_target.svg
> >
> >
> > _______________________________________________
> > Interest mailing list
> > Interest at qt-project.org
> > https://lists.qt-project.org/listinfo/interest
> 







More information about the Interest mailing list