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

问题描述 投票:8回答:3

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

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

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

qt drawing pixel image
3个回答
8
投票

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


6
投票

最快的解决方案可能是创建bits(),对其进行操作(设置像素),然后让Qt绘制它。

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

QImage类提供了独立于硬件的图像表示形式,该图像表示形式允许直接访问像素数据,并且可以用作绘制设备。

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

详细说明部分中有关于像素操纵的信息。

要显示它,最简单的方法是使用QImage将其转换为像素图,然后使用QImage将其放置在标签中。

[为了获得更多控制,您可以继承QPixmap::fromImage的子类,重载QLabel::setPixmap,并使用QWidgetpaintEvent绘制QImage。


2
投票

您可能尝试使用QPainterQPainter::drawImage功能。

© www.soinside.com 2019 - 2024. All rights reserved.