弄清楚QPixmap

时间:2012-02-17 20:57:02

标签: c++ qt

我想知道如何使用QPixmap并使其显示为“灰显”...基本上,删除所有颜色并降低alpha。

3 个答案:

答案 0 :(得分:2)

你能用这样的东西设置alpha吗?

QPixmap &setAlpha(QPixmap &px, int val){
  QPixmap alpha = px;
  QPainter p(&alpha);
  p.fillRect(alpha.rect(), QColor(val, val, val));
  p.end();
  px.setAlphaChannel(alpha);
  return px;
}

您可能需要转换为QImage并使用convertToFormat()方便地转换为灰度。

答案 1 :(得分:2)

QGraphicsColorizeEffect可能是未来更受欢迎的方式。

答案 2 :(得分:2)

去饱和算法(去除所有颜色)将涉及迭代每个像素并标准化RGB值。

伪代码如下所示:

foreach pixel in image.bits() {

   int grayColor = 0.299f * pixel.red +
                    0.587f * pixel.green +
                    0.114f * pixel.blue ;

   image.putPixel(grayColor);
}
相关问题