у меня на wigdet-e задан фон.
Я рисую QPainter-ом градиент.
Если все происходит на черном фоне, то цвета отрисовываются корректно.
Но вот если поменять фон, например, на желтый, то цвета накладываются и и получаются совсем не те, которые нужно.
Можно ли избежать наклыдывания цветов и оперировать только истинными цветами.
З.Ы. Можно ли как для стандартного цвета изменять его яркость.
Например есть Qt::red и хотелось бы не задавая QColor(r, g, B ) и зменять сразу яркость именно red-составляющей цвета.
можешь код отрисовки градиента показать? Как ты его рисуешь и как задаешь?
яркость можно задавать через использование QColor.
QPainter painter(this);
painter.setBrush (Qt::black);
painter.drawRect (rect.x(), rect.y(), rect.width() - 1, rect.height() - 1);
painter.setPen (Qt::darkGreen);
...
painter.setPen (Qt::black);
for (..., ..., ...)
{
uint color = (value * 3) % 256;
painter.setBrush (QColor (color, 0, 0));
if (...)
{
qreal center = ...;
QLinearGradient gradient (border, dy, rect.width() - border, dy);
uint cnear= std::max<uint> (color - 0x40, 0);
gradient.setColorAt(center - 0.10, Qt::black);
gradient.setColorAt(center - 0.05, QColor (cnear, 0, 0));
gradient.setColorAt(center - 0.00, QColor (color, 0, 0));
gradient.setColorAt(center + 0.05, QColor (cnear, 0, 0));
gradient.setColorAt(center + 0.10, Qt::black);
painter.setBrush (QBrush (gradient));
}
painter.drawRect (border, dy, rect.width() - border * 2, WIDTH);
}
да, это и имелось ввиду.
а что по градиенту - ничего криминального в данном коде не нашел. Проверил у себя такую же ситуацию - ничего не меняется, т.е. рисуется безо всяких наложений и т.п. (да и не должно быть такого - если не меняешь opacity пеинтера. Альфа канал у градиента по-умолчанию 255, т.е. откуда взятся наложению?).
Какая версия Qt? Показать весь код отрисовки можешь? Тут скорее всго дело в чем-то другом.
Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)