直接上代码,帮忙看看哪里还有问题
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
this->setGeometry(100,100,480,320);
m_pPixmap = QPixmap(12,320);
m_pGlobal = QPixmap(64,32);
m_pTimer = new QTimer();
connect(m_pTimer,SIGNAL(timeout()),SLOT(onTimer()));
m_pTimer->start(200);
m_nIndex = 0;
m_rePaint = true;
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::paintEvent(QPaintEvent *)
{
QPainter paint(this);
if(m_rePaint)
{
paint.fillRect(0,0,480,320,QColor("red"));
m_rePaint = false;
}
paint.drawPixmap(QPoint(0,0),m_pPixmap,rect);
}
void MainWindow::onTimer()
{
m_pPixmap.fill(QColor("blue"));
QPainter paint(&m_pPixmap);
int n = qrand()%320;
int m = qrand()%320;
paint.drawLine(0,n,2,m);
m_nIndex += 2;
if(m_nIndex > 480)
m_nIndex = 0;
rect = QRect(m_nIndex,0,m_nIndex+2,320);
repaint(rect);
}
最后运行,可以看到确实是局部刷新的,但是图像总是有问题呢?求帮忙解答
------解决方案--------------------
有没有算法可以丢弃一部分数据呢。
另外这个频繁刷新,有没有一部分CPU的计算结果被浪费呢(并没有被界面绘制)?
------解决方案--------------------
大量的实时绘图应该就类似于视频播放了吧?
不建议在QT中做,而是用DX或者其他的图形库。QT只需将窗口句柄传给绘图模块。