主题:关于Qt显示的刷新效率

主题:关于Qt显示的刷新效率
20190731写

绘图主要有三种方法:QPainter、QCustomPlot、QWT,其中QPainter是Qt基础工具,直接使用QPainter绘制波形等图形效率是很低的。
关于QCustomPlot、QWT的比较参看网站:https://blog.csdn.net/lihuagedi/article/details/81137380。

关于QCustomPlot学习网站:

  1. QCustomplot(二) 源码解读: https://www.cnblogs.com/guaiweihudou/p/10761672.html。
  2. QCustomplot使用效率优化:https://www.cnblogs.com/pied/p/5164000.html

请了解QPixmap、QImage、QBitmap和QPicture的区别:
https://blog.csdn.net/cloud_castle/article/details/26256663

通过对QCustomPlot代码分析“加速Qt绘画的原理”的总结:

  1. QCustomPlot画曲线等控件是通过QPainter绘画到QPixmap内存中,最后调用report方法激活绘制到屏幕(QPainter::drawPixmap)。

由上思考两个问题:

  1. 对于多线程编程,数据分析处理和GUI实时显示波形数据,如何减轻UI线程负担或者做一些特殊效果?
    答:QImage加载数组数据较好,实现的余辉、算法、叠加顺序、明暗程度都容易自控制。
    如果是简单的曲线显示和没有余辉要求、点之间连线特殊需求,则QCustomPlot使用更加方便快捷。
    比如示波器画波形需求很多(波形的余辉、上升或下降沿两点间两线方式、波形的明暗设置、波形的叠加顺序设置、波形的压缩算法),较适合使用QImage加载数组的方法。
    示波器画趋势图、直方图、波特图需求较为简单,较适合使用QCustomPlot库。
    网站:Qt加载RGB内存数据:https://blog.csdn.net/Aidam_Bo/article/details/84586132
    RGB数组数据 -> QImage构造加载 -> QImage转为QPixmap -> QLabel控件设置显示QPixmap,其中RGB数组数据可以在非GUI线程中生成,提高GUI响应。

  2. 对于中等复杂度的图形绘制显示,如何减轻UI线程负担?
    疑问:paintEvent绘画结束后再刷新屏幕显示了,还是其中QPainter画一条直线就立即刷新显示了?
    答:是否可以学习画图库QCustomplot、Qwt的方法,先绘制到QPixmap内存之后,最后再在paintEvent中drawPixmap?!

请注意学习:
Qpainter、QPaintDevice、QPixmap、QImage几个类之间的关系
1、QPainter(QPaintDevice *device),QPainter::drawPixmap(XXX)。
2、QPaintDevice Inherited By: QImage, QOpenGLPaintDevice, QPaintDeviceWindow, QPicture, and QPixmap。

  • 7
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值