Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 使QPixmap变灰_C++_Qt - Fatal编程技术网

C++ 使QPixmap变灰

C++ 使QPixmap变灰,c++,qt,C++,Qt,我正在试图弄清楚如何使用QPixmap使其显示为“灰色”。。。基本上,删除所有颜色并降低alpha。您可以使用类似的方法来设置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(

我正在试图弄清楚如何使用QPixmap使其显示为“灰色”。。。基本上,删除所有颜色并降低alpha。

您可以使用类似的方法来设置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;
}
您可能需要转换为a并使用()方便地转换为灰度。

可能是更可取的方法。

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

伪代码如下所示:

foreach pixel in image.bits() {

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

   image.putPixel(grayColor);
}
仅供参考:setAlphaChannel()已被弃用,仅在Qt3支持中可用。