在QLabel上显示char *位图的最快方法

时间:2012-02-08 19:59:18

标签: qt qpainter qpixmap qlabel

我正在开发一个图像处理应用程序,它将来自IDS uEye驱动程序的图像数据作为原始char*缓冲区。我需要向用户显示此图像。 (据我了解Qt,QLabel类应该用于此目的)。我还应该说明图像处理算法,我认为通过直接修改char*缓冲区可以做到最快。

我用这种方法看过很多代码示例:

label.setPixmap(QPixmap::fromImage(image));

其中image是从QImage缓冲区构建的char*

但是,我在uEye演示应用程序源代码中找到了这段代码:

void PaintLabel::paintEvent(QPaintEvent *ev)
{
  //...
  QPainter painter(this);
  painter.drawImage(rectangle, image);
  painter.end();
}

其中PaintLabelQLabel的子类,rectangleQRectF,显示image的绘制位置。

我已经完成了一些时间测量,结果发现第二种方法的速度提高了约1.8倍(大约9 ms对16 ms)。

所以,我的问题是:有没有其他方法可以更快地显示char*位图 - 尽可能快?请注意,这只是一个相同的缓冲区,它的内容正在发生变化;所以没有必要从头开始为每一帧重建一切 - 只是为了刷新。

0 个答案:

没有答案