我在QGraphicsView中有一个QImage,我需要不断显示图像。有时我需要连续显示倒置的图像。为此,我使用
img.invertPixels(QImage::InvertRgba);
但此时,由于连续反转过程,显示屏会闪烁。如何在不影响性能的情况下实现反转过程?显示器看起来很平滑而没有反转。 `
QImage img(byImageBuf, width, height, QImage::Format_Indexed8);
scene->clear();
if(bInvertPixel)
{
/* Inverted image */
img.invertPixels(QImage::InvertRgba);
}
scene->addPixmap(QPixmap::fromImage(img));
view->fitInView(0, 0, width, height, Qt::IgnoreAspectRatio);
view->update();`
答案 0 :(得分:2)
由于您使用的是索引图像类型(QImage::Format_Indexed8
),因此可以反转颜色表并切换:
if(bInvertPixel)
{
/* Inverted image */
img.setColorTable( invertedColorTable );
}
else
{
img.setColorTable( standardColorTable );
}
standardColorTable
和invertedColorTable
是QRgb值的数组。
色表的美妙之处在于,每次显示图像时都不必更新它;只需设置一次而忘记它。连接来自按钮的信号以反转颜色并在那里设置颜色表。