diff --git a/osciwidget.cpp b/osciwidget.cpp index 2b8d675..6e00692 100644 --- a/osciwidget.cpp +++ b/osciwidget.cpp @@ -56,11 +56,16 @@ void OsciWidget::paintEvent(QPaintEvent *event) m_statsTimer.restart(); } + QPainter painter(this); + painter.drawPixmap(0, 0, m_pixmap); +} + +void OsciWidget::updateFrameBuffer() +{ if (m_pixmap.size() != size()) m_pixmap = QPixmap(size()); - QPainter painter; - painter.begin(&m_pixmap); + QPainter painter(&m_pixmap); // darkening last frame painter.setCompositionMode(QPainter::CompositionMode_Multiply); @@ -100,21 +105,14 @@ void OsciWidget::paintEvent(QPaintEvent *event) m_lastPoint = p; } - painter.setOpacity(1); - painter.resetTransform(); - - painter.end(); - - painter.begin(this); - painter.drawPixmap(0, 0, m_pixmap); - painter.end(); - m_buffer.clear(); } void OsciWidget::timerEvent(QTimerEvent *event) { QWidget::timerEvent(event); - if (event->timerId() == m_redrawTimerId) + if (event->timerId() == m_redrawTimerId){ + updateFrameBuffer(); repaint(); + } } diff --git a/osciwidget.h b/osciwidget.h index 6a596cb..810c92e 100644 --- a/osciwidget.h +++ b/osciwidget.h @@ -39,6 +39,9 @@ protected: void paintEvent(QPaintEvent *event) override; void timerEvent(QTimerEvent *event) override; +private: + void updateFrameBuffer(); + private: float m_factor{2.f}; int m_fps{30}, m_afterglow{175};