Qt 如何在不影响性能的情况下反转QImage?

Qt 如何在不影响性能的情况下反转QImage?,qt,qt4,qgraphicsview,qimage,Qt,Qt4,Qgraphicsview,Qimage,我有一个QGraphicsView中的图像,我需要连续显示图像。有时我需要连续显示反转图像。为此,我使用 img.invertPixels(QImage::InvertRgba); 但此时,由于连续反转过程,显示器闪烁。如何在不影响性能的情况下实施反转过程?显示器看起来很平滑,没有倒置 QImage img(byImageBuf, width, height, QImage::Format_Indexed8); scene->clear(); if(bInv

我有一个QGraphicsView中的图像,我需要连续显示图像。有时我需要连续显示反转图像。为此,我使用

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();`

由于您使用的是索引图像类型(
QImage::Format_Indexed8
),因此您可以反转颜色表并切换:

if(bInvertPixel)
{
   /* Inverted image */
   img.setColorTable( invertedColorTable );
}
else
{
   img.setColorTable( standardColorTable );
}
standardColorTable
invertedColorTable
是QRgb值的数组


颜色表的美妙之处在于,您不必每次显示图像时都更新它;只需设定一次,然后忘记它。连接按钮的信号以反转颜色,并在那里设置颜色表。

你所说的“反转图像而不影响性能”是什么意思?你认为图像可以在没有CPU周期的情况下反转吗?反转意味着将黑色变为白色,将白色变为黑色我问的是“不影响性能”部分。是什么让你认为
img.invertPixels(QImage::InvertRgba)
的速度还不够快?当我不反转地连续显示图像时,它会以平滑的方式显示,但在反转时,显示会闪烁。对不起,您的问题非常模糊和不清楚。我建议你编辑一下。确保你清楚地描述你在做什么,问题是什么。例如,你为什么不先说“闪烁”。你怎么能指望有人猜到“影响性能”意味着“闪烁”?