我有一张我想在 QImage 中显示的图像。
这是填充 rows*cols 图像的代码片段:
rgbMapped[row][col * 3] = red;
rgbMapped[row][col * 3 + 1] = green;
rgbMapped[row][col * 3 + 2] = blue;
如您所见,我的数据缓冲区是“行高”并且是“列*3 宽”
rgbMapped 是一个 unsigned char** 数组。所以回到我的 QT 代码中,我有以下内容:
QImage *qi = new QImage(getWidth(), getHeight(), QImage::Format_RGB888);
for (int h = 0; h< getHeight(); h++){
memcpy(qi->scanLine(h), rgbMapped[h], getWidth()*3);
}
QPixmap p(QPixmap::fromImage(*qi,Qt::ColorOnly));
if(scene.items().contains(item)){
scene.removeItem(item);
}
item = new ImagePixmapItem(p);
scene.addItem(item);
ui->graphicsView->setScene(&scene);
ui->graphicsView->show();
ImagePixMapItem 是我创建的一个 QGraphicsPixmapItem,它允许我拦截一些鼠标事件,但我不会对任何绘图函数或任何东西做任何事情。
当我运行这段代码时,我返回的图像看起来像我的图像,除了有三个副本,一个是绿色的,一个看起来是黄色的,一个是明显的紫色。
如果这三组数据相互重叠,似乎可能是正确的图像?