Выкрашивание QPixmap - PullRequest
       2

Выкрашивание QPixmap

2 голосов
/ 18 февраля 2012

Я пытаюсь понять, как я могу взять QPixmap и сделать его "серым" ... в основном, убрать весь цвет и уменьшить альфа.

Ответы [ 3 ]

2 голосов
/ 18 февраля 2012

QGraphicsColorizeEffect, вероятно, является более предпочтительным способом продвижения вперед.

2 голосов
/ 09 июня 2012

Алгоритм десатурации (удаление всех цветов) будет включать в себя итерацию по каждому пикселю и нормализацию значений RGB.

Псевдокод выглядит так:

foreach pixel in image.bits() {

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

   image.putPixel(grayColor);
}
2 голосов
/ 18 февраля 2012

Можете ли вы использовать что-то вроде этого, чтобы установить альфа?

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 () для удобного преобразования в оттенки серого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...