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

pav*_*din 8 qt drawing image pixel

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

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

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

kin*_*nak 8

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


Sil*_*ker 6

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

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

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

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

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

要显示它,最简单的方法是将其转换为pixmap,QPixmap::fromImage然后将其放入标签中QLabel::setPixmap.

对于更多的控制,你可以子类QWidget,重载paintEvent,并用绘制的QImage QPainterQPainter::drawImage.