Название: Градиент цвета Отправлено: PulSar.CE3194694 от Февраль 03, 2013, 17:58 Добрый вечер.
Подскажите, как реализовать градиент цвета так, чтобы можно было узнать промежуточное значение? Т.е.: есть некоторая шкала, которой я хочу сопоставить цвет (например, как на географических картах). Для этого самому большому значения шкалы я задаю верхний цвет, а для самого маленького - нижний цвет. А далее хочу узнать, какой цвет имеет некоторое промежуточное значение. Думал это есть в классе QGradient, но ничего не оказалось. В принципе я знаю один способ, но он несколько ущербен, т.к. не позволяет использовать все цвета rgb. Что посоветуете? Название: Re: Градиент цвета Отправлено: xokc от Февраль 04, 2013, 08:11 Из простых костылей: создаешь QGradient, заполняешь им QBitmap нужного размера (в соответствии с требуемой точность значений), и получаешь значение требуемого цвета через getPixel.
Название: Re: Градиент цвета Отправлено: PulSar.CE3194694 от Февраль 04, 2013, 09:11 Интересный костыль. А если нет возможности использовать paintEvent?
Название: Re: Градиент цвета Отправлено: Bepec от Февраль 04, 2013, 11:28 Тогда отрисовываете всё на QImage и суёте его в label.
Название: Re: Градиент цвета Отправлено: PulSar.CE3194694 от Февраль 04, 2013, 12:32 Тогда отрисовываете всё на QImage и суёте его в label. Как на нем можно что-то отрисовать, если для этого нужен paintEvent, который есть только в виджетах.Название: Re: Градиент цвета Отправлено: GreatSnake от Февраль 04, 2013, 13:01 Отрисовка в QImage делается синхронно и с виджетами никак не пересекается.
Название: Re: Градиент цвета Отправлено: Kurles от Февраль 04, 2013, 13:04 Интересный костыль. А если нет возможности использовать paintEvent? А зачем тебе paintEvent для отрисовки на QBitMap? Название: Re: Градиент цвета Отправлено: Igors от Февраль 04, 2013, 13:25 Добрый вечер. Есть простая арифметическая операция, называется взвешивание или интерполяция. Подскажите, как реализовать градиент цвета так, чтобы можно было узнать промежуточное значение? Т.е.: есть некоторая шкала, которой я хочу сопоставить цвет (например, как на географических картах). Для этого самому большому значения шкалы я задаю верхний цвет, а для самого маленького - нижний цвет. А далее хочу узнать, какой цвет имеет некоторое промежуточное значение. Думал это есть в классе QGradient, но ничего не оказалось. В принципе я знаю один способ, но он несколько ущербен, т.к. не позволяет использовать все цвета rgb. Что посоветуете? Код
Название: Re: Градиент цвета Отправлено: xokc от Февраль 05, 2013, 08:38 Есть простая арифметическая операция, называется взвешивание или интерполяция. А если у него градиент не линейный?Название: Re: Градиент цвета Отправлено: GreatSnake от Февраль 05, 2013, 10:24 А если у него градиент не линейный? Для этого самому большому значения шкалы я задаю верхний цвет, а для самого маленького - нижний цвет. ТС вроде как линейный имеет в виду.Название: Re: Градиент цвета Отправлено: PulSar.CE3194694 от Февраль 05, 2013, 11:38 Код: [quote author=Igors link=topic=24107.msg171091#msg171091 date=1359973520] Как раз то, что нужно, спасибо. Не знал, каким образом связать мою шкалу со сразу тремя компонентами цвета. Название: Re: Градиент цвета Отправлено: xokc от Февраль 05, 2013, 12:56 ТС вроде как линейный имеет в виду. Ну если смотреть сюдаНапример, как на географических картах то совсем не факт. Тем более что если речь идёт о понятиях высота/глубина, то там вовсе не два цвета в градиенте. Впрочем, ТС вроде бы уже доволен, так что - умолкаю.Название: Re: Градиент цвета Отправлено: Igors от Февраль 05, 2013, 13:22 А если у него градиент не линейный? Ну это действительно катастрофа :)Код
Название: Re: Градиент цвета Отправлено: Ilya_181 от Август 30, 2017, 16:55 Есть простая арифметическая операция, называется взвешивание или интерполяция.
Код [/quote] Не могу понять 1. что значит maxC и minV? И почему они по ссылке передаются? 2. что значить minV и maxV? 3. val что это? Помогите! Название: Re: Градиент цвета Отправлено: Apktyc от Август 30, 2017, 17:25 minC, maxC - начальный и конечный цвета для градиента. Ссылка - чтобы не происходило копирования.
minV, maxV - задают диапазон значений. val - значение (лежащее в диапазоне minV <= val <= maxV) для которого надо рассчитать промежуточный цвет. Название: Re: Градиент цвета Отправлено: Ilya_181 от Август 30, 2017, 17:38 minC, maxC - начальный и конечный цвета для градиента. Ссылка - чтобы не происходило копирования. minV, maxV - задают диапазон значений. val - значение (лежащее в диапазоне minV <= val <= maxV) для которого надо рассчитать промежуточный цвет. Код
Для Qt так будет верно? Interpolate(Qt::green, Qt::red, 0, 255, 44); |