[Interest] double-buffering, quality drop

Harri Pasanen harri at mpaja.com
Tue Feb 3 09:11:28 CET 2015


Which Qt version?

https://bugreports.qt.io/browse/QTBUG-42330

Is perhaps related?

Harri

On 03/02/2015 08:55, Alexander Semke wrote:
> Hi,
>
> I'm one of the developers of LabPlot, a KDE-application for interactive
> plotting and analysis of data. I'm struggling with a problem since long time
> that prevents the next release of the software. So, any help on this issue
> will be highly appreciated :-)
>
> To speed up the painting of large curves we use the "double buffering"
> technique - the curve is painted on a QPixmap in updatePixmap()-function (only
> called when the user changes the properties of the curve) and then painted to
> Curve (derived from QGraphicsItem) in the paint()-function (called much more
> frequently)
>
> Curve::updatePixmap() {
> 	QPixmap pixmap(boundingRectangle.width(), boundingRectangle.height());
> 	QPainter painter(&pixmap);
> 	painter.setRenderHint(QPainter::Antialiasing, true);
> 	//perform drawing
>
> 	m_pixmap = pixmap;
> }
>
> Curve::paint((QPainter* painter, const QStyleOptionGraphicsItem*, QWidget*) {
> 	painter->save();
> 	painter->setPen(Qt::NoPen);
> 	painter->setBrush(Qt::NoBrush);
> 	painter->setRenderHint(QPainter::SmoothPixmapTransform, true);
> 	painter->drawPixmap(boundingRectangle.topLeft(), m_pixmap);
> 	painter->restore();
> }
>
> The performance gain is huge. But there is also a huge drop in the quality
> that I cannot explain. I attached two screenshots - with and without double
> buffering. Without double buffering just means that all the drawing stuff is
> done in paint() directly.
>
> What am I doing here wrong? Any ideas?
>
>
>
>
> _______________________________________________
> Interest mailing list
> Interest at qt-project.org
> http://lists.qt-project.org/mailman/listinfo/interest

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.qt-project.org/pipermail/interest/attachments/20150203/58c69033/attachment.html>


More information about the Interest mailing list