【问题标题】:How to draw pixels from display buffer?如何从显示缓冲区中绘制像素?
【发布时间】:2012-03-12 08:52:19
【问题描述】:

是否有任何示例 Qt 代码显示来自 unsigned char 显示缓冲区的图像?缓冲区上的每个字节对应于灰度像素颜色。显示缓冲区的内容在运行时以指定的时间间隔更改。我需要尽可能快地更改显示缓冲区内容,以使图像看起来在移动。我的问题是如何快速从缓冲区中绘制像素?我不需要保存图像,只想显示它。请帮忙

【问题讨论】:

  • 您的问题缺少一些对应的标签,而其中列出了许多不相关的标签

标签: qt qt4 qt4.7 qt4.6 qt4.8


【解决方案1】:

QImage 提供constructor 用于使用unsigned char 缓冲区进行初始化。为了显示它,您可以使用QGraphicsViewQGraphicsScene。每次缓冲区的数据发生变化时,您都可以调用类似于以下的槽:

void updateImage()
{
     // I assume an 1024x768 image
     QImage img(buffer, 1024, 768, QImage::Format_Indexed8);
     scene->clear();
     scene->addPixmap(QPixmap::fromImage(img));
     graphicsView->update(); 
}

您还可以使用QPixmaploadFromData 来直接从无符号字符数组加载像素图并避免QImage 步骤。

【讨论】:

  • 我使用 Qimage 而不是 QPixmap。但是即使缓冲区中的数据发生变化,显示的图像也始终是黑色的
  • 无符号字符缓冲区[50*200] = {150}; QImage img(buffer, 50, 200, QImage::Format_Indexed8); m_scene->clear(); m_scene->addPixmap(QPixmap::fromImage(img)); m_view->update();
  • unsigned char buffer[50*200] = {150} :此调用将创建一个包含以下内容的缓冲区 [150,0,0,0,0,0,0,....,0] 因此将显示黑色图像,并且只有左上角的像素具有 150 的灰度值。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-04-04
  • 2016-11-24
  • 2010-12-06
  • 1970-01-01
  • 2011-09-06
  • 2014-01-16
相关资源
最近更新 更多