crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> QLinearGradient
zss
  опции профиля:
сообщение 19.7.2009, 13:56
Сообщение #1


Участник
**

Группа: Участник
Сообщений: 112
Регистрация: 9.6.2009
Пользователь №: 815

Спасибо сказали: 0 раз(а)




Репутация:   0  


у меня на wigdet-e задан фон.
Я рисую QPainter-ом градиент.

Если все происходит на черном фоне, то цвета отрисовываются корректно.
Но вот если поменять фон, например, на желтый, то цвета накладываются и и получаются совсем не те, которые нужно.
Можно ли избежать наклыдывания цветов и оперировать только истинными цветами.

З.Ы. Можно ли как для стандартного цвета изменять его яркость.
Например есть Qt::red и хотелось бы не задавая QColor(r, g, B ) и зменять сразу яркость именно red-составляющей цвета.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 19.7.2009, 14:10
Сообщение #2


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9668
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(zss @ 19.7.2009, 17:56) *
Можно ли как для стандартного цвета изменять его яркость.
думаю можно, хотя и не делал. Qt поддерживает модель HSV - тон, насыщенность, яркость, см. QColor.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ufna
  опции профиля:
сообщение 19.7.2009, 15:16
Сообщение #3


Активный участник
***

Группа: Участник
Сообщений: 362
Регистрация: 24.5.2008
Из: Курган/СПб
Пользователь №: 182

Спасибо сказали: 29 раз(а)




Репутация:   5  


можешь код отрисовки градиента показать? Как ты его рисуешь и как задаешь?



яркость можно задавать через использование QColor.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
zss
  опции профиля:
сообщение 19.7.2009, 17:18
Сообщение #4


Участник
**

Группа: Участник
Сообщений: 112
Регистрация: 9.6.2009
Пользователь №: 815

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(ufna @ 19.7.2009, 19:16) *
можешь код отрисовки градиента показать? Как ты его рисуешь и как задаешь?


ну примерно так
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);
}


Цитата(Litkevich Yuriy @ 19.7.2009, 15:10) *
яркость можно задавать через использование QColor.

Цитата(zss @ 19.7.2009, 14:56) *
Qt поддерживает модель HSV


Имелось ввиду это ?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 19.7.2009, 18:12
Сообщение #5


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9668
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(zss @ 19.7.2009, 21:18) *
...
Цитата(Litkevich Yuriy @ 19.7.2009, 15:10) *
яркость можно задавать через использование QColor.

Цитата(zss @ 19.7.2009, 14:56) *
Qt поддерживает модель HSV


Имелось ввиду это ?

zss, ты все кнопки перепутал, обрати внимание на то, что у тебя получилось. Цитата не соответствует автору цитаты.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
zss
  опции профиля:
сообщение 19.7.2009, 18:56
Сообщение #6


Участник
**

Группа: Участник
Сообщений: 112
Регистрация: 9.6.2009
Пользователь №: 815

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(Litkevich Yuriy @ 19.7.2009, 19:12) *
zss, ты все кнопки перепутал, обрати внимание на то, что у тебя получилось. Цитата не соответствует автору цитаты.

:) пардон - не туда жмакал
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ufna
  опции профиля:
сообщение 21.7.2009, 12:50
Сообщение #7


Активный участник
***

Группа: Участник
Сообщений: 362
Регистрация: 24.5.2008
Из: Курган/СПб
Пользователь №: 182

Спасибо сказали: 29 раз(а)




Репутация:   5  


да, это и имелось ввиду.


а что по градиенту - ничего криминального в данном коде не нашел. Проверил у себя такую же ситуацию - ничего не меняется, т.е. рисуется безо всяких наложений и т.п. (да и не должно быть такого - если не меняешь opacity пеинтера. Альфа канал у градиента по-умолчанию 255, т.е. откуда взятся наложению?).

Какая версия Qt? Показать весь код отрисовки можешь? Тут скорее всго дело в чем-то другом.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 9.12.2021, 6:56