我正在开发一个程序,必须使用特殊算法来计算1024x1024图片上每个点的颜色。点的颜色表示某个值。因此,每个点都独立于其他点,必须分别绘制。我不必经常刷新图片。实际上,我只需要显示一次。
在Qt中绘制单独像素的最快方法是什么?
我可以得到某种“屏幕内存”并将所有图片写成4字节集的数组,在该内存中将每个像素表示为4字节吗?
QImage
类针对像素操作进行了优化。您可以使用所需的大小实例化一个,然后分别设置像素QImage
,或访问原始数据并通过setPixel
对其进行操作。只要确保使用正确的格式即可(例如RGBA值或8位图像的颜色索引)
最快的解决方案可能是创建bits()
,对其进行操作(设置像素),然后让Qt绘制它。
QImage类用于快速IO,来自手册:
QImage类提供了独立于硬件的图像表示形式,该图像表示形式允许直接访问像素数据,并且可以用作绘制设备。
QImage类支持Format枚举描述的几种图像格式。这些包括单色,8位,32位和alpha混合图像,这些图像在所有Qt 4.x版本中都可用。
详细说明部分中有关于像素操纵的信息。
要显示它,最简单的方法是使用QImage
将其转换为像素图,然后使用QImage
将其放置在标签中。
[为了获得更多控制,您可以继承QPixmap::fromImage
的子类,重载QLabel::setPixmap
,并使用QWidget
和paintEvent
绘制QImage。
您可能尝试使用QPainter
和QPainter::drawImage
功能。