双字符数组映射到QImage

时间:2013-03-17 07:56:39

标签: qt qimage

我有一个dataBuffer的双指针char [1000] [1000] 在那个char指针的某些地方,我将使十六进制值为0xFF,剩余的为0x00(对于openGL绘图)

现在我希望它将它显示为带有十六进制值的QWidget。

我发现QImage我们可以映射1000x1000像素,但我不知道如何将char的十六进制值映射到像素。

请帮帮我,  提前致谢。

1 个答案:

答案 0 :(得分:0)

您可以尝试执行以下操作:

首先,使用此构造函数从您的缓冲区构建QImageQImage(const uchar* data, int width, int height, Format format),使用QImage::Format_Indexed8作为format,即

QImage img(dataBuffer, 1000, 1000, QImage::Format_Indexed8)

其次,初始化颜色转换图:它应该是QVector<QRgb>,所以你需要做这样的事情:

QVector<QRgb> colorMap(256);
colorMap[255] = QRgb(255, 255, 255); // Any color of your choice
// probably some other mappings

然后像这样使用QImage::convertToFormat

QImage converted = img.convertToFormat(QImage::Format_RGB32, colorMap)

这会将其转换为RGB。基本上就是这样,现在你可以在你的小部件上绘制这个图像或将其保存到文件中。