当前位置: 代码迷 >> QT开发 >> QPainter怎么绘制重叠波形
  详细解决方案

QPainter怎么绘制重叠波形

热度:90   发布时间:2016-04-25 03:16:17.0
QPainter如何绘制重叠波形
    我现在要做的工作将串口获取的数据通过波形的形式显示在显示屏上,目前我是用paintEvent实现的,但我们知道QPainter在每次update的时候都是会重新绘制的,所以每次只能显示一组数据,等下一组数据过来的时候就会清空上一组数据绘制的波形,现在我想保留之前绘制的波形,达到绘制重叠波形的效果,不知道如何实现?还请大神帮助。
------解决方案--------------------
引用:
Quote: 引用:

使用QImage, 先在接收数据的函数里使用QPainter绘制在image上面, 之后在paintEvent里面调用painter->drawImage()函数就可以了的.

我现在的做法是将之前绘制的波形界面保存在QPixmap中,等下一次绘制的时候先绘制QPixmap,再绘制下一个波形,不知道你是否也是这个意思?不知道有没有更便捷的方式,因为我的应用程序是跑在嵌入式上面的,所以希望尽量少的消耗系统资源。


我也做过这个功能,开始使用QVector把所有的波形数据储存起来,但数据一多,也不省内存, 再全部绘制一遍, 效率似乎也不高;
然后就是在界面类定义一个成员变量QImage *image;(我的图片要求不高, 400*300, 16bit的就够了, 有64M内存)
在接收一批波形数据的函数里:
QPainter painter(image);
    //绘制
painter.end();
在界面的paintEvent函数里面:
QPainter painter(this);
painter.drawImage(0, 0, *image);
painter.end();