1

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

1 回答 1

3

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

if(bInvertPixel)
{
   /* Inverted image */
   img.setColorTable( invertedColorTable );
}
else
{
   img.setColorTable( standardColorTable );
}

standardColorTable并且invertedColorTable是 QRgb 值的数组。

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

于 2012-12-06T19:51:44.010 回答