Qt的。在屏幕上绘制1024x1024点的最快方法

时间:2012-01-09 15:32:09

标签: qt drawing pixel image

我正在开发一个程序,必须使用特殊算法计算1024x1024图片上每个点的颜色。点的颜色代表一些值。因此,每个点都独立于其他点,必须单独绘制。我不必太频繁地刷新图片。实际上,我只需要显示一次。

在Qt中绘制单独像素的最快方法是什么?

我可以获得某种“屏幕内存”并将所有图片写为4字节集的数组,将每个像素表示为该内存中的4个字节吗?

3 个答案:

答案 0 :(得分:8)

QImage类针对像素操作进行了优化。您可以使用所需大小实例化一个,然后单独设置像素setPixel,或访问原始数据并通过bits()对其进行操作。请务必使用正确的格式(例如,RGBA值或8位图像的颜色索引)

答案 1 :(得分:6)

最快的解决方案可能是创建QImage,操纵它(设置像素),然后让Qt绘制它。

QImage类用于快速IO,来自手册:

  

QImage类提供与硬件无关的图像表示,允许直接访问像素数据,并可用作绘图设备。

     

QImage类支持Format enum描述的几种图像格式。这些包括单色,8位,32位和alpha混合图像,可在Qt 4.x的所有版本中使用。

详细说明部分提供了有关像素操作的信息。

要显示它,最简单的方法是将其转换为带有QPixmap::fromImage的像素图,然后将其放在带有QLabel::setPixmap的标签中。

要获得更多控制权,您可以对QWidget进行子类化,重载paintEvent,并使用QPainter QPainter::drawImage绘制QImage。

答案 2 :(得分:2)

您可以尝试使用OpenGL widgetglDrawPixels功能。