【发布时间】:2012-03-12 08:52:19
【问题描述】:
是否有任何示例 Qt 代码显示来自 unsigned char 显示缓冲区的图像?缓冲区上的每个字节对应于灰度像素颜色。显示缓冲区的内容在运行时以指定的时间间隔更改。我需要尽可能快地更改显示缓冲区内容,以使图像看起来在移动。我的问题是如何快速从缓冲区中绘制像素?我不需要保存图像,只想显示它。请帮忙
【问题讨论】:
-
您的问题缺少一些对应的标签,而其中列出了许多不相关的标签
是否有任何示例 Qt 代码显示来自 unsigned char 显示缓冲区的图像?缓冲区上的每个字节对应于灰度像素颜色。显示缓冲区的内容在运行时以指定的时间间隔更改。我需要尽可能快地更改显示缓冲区内容,以使图像看起来在移动。我的问题是如何快速从缓冲区中绘制像素?我不需要保存图像,只想显示它。请帮忙
【问题讨论】:
QImage 提供constructor 用于使用unsigned char 缓冲区进行初始化。为了显示它,您可以使用QGraphicsView 和QGraphicsScene。每次缓冲区的数据发生变化时,您都可以调用类似于以下的槽:
void updateImage()
{
// I assume an 1024x768 image
QImage img(buffer, 1024, 768, QImage::Format_Indexed8);
scene->clear();
scene->addPixmap(QPixmap::fromImage(img));
graphicsView->update();
}
您还可以使用QPixmap 的loadFromData 来直接从无符号字符数组加载像素图并避免QImage 步骤。
【讨论】:
unsigned char buffer[50*200] = {150} :此调用将创建一个包含以下内容的缓冲区 [150,0,0,0,0,0,0,....,0] 因此将显示黑色图像,并且只有左上角的像素具有 150 的灰度值。