Всем привет. Подскажите пожалуйста как можно сделать вот такую вещь?
Интересует в частности как сделать линию графика переменным градиентом? Инфы в сети не смог найти. Буду рад за совет или ссылку.
Построение графиков.
-
evgen_dndz
- Сообщения: 11
- Зарегистрирован: 28 окт 2014, 14:43
Построение графиков.
- Вложения
-
- pic.jpg (20.81 КБ) 3758 просмотров
Re: Построение графиков.
Если не ошибаюсь копать нужно в сторону шейдеров
Re: Построение графиков.
Ну как я понимаю цвет точки зависит от значения в этой точке. Минимальное значение красным (255, 0, 0), максимальное зеленым (0, 255, 0). Среднее желтое (255, 255, 0). Промежуточные значения ниже среднего (255, 255->0, 0), выше среднего (255->0, 255, 0). ну в скобочках указано RGB (R, G, B).
А вот как вы будете рисовать график этого я уже не знаю. Я бы поискал готовую библиотеку.
А вот как вы будете рисовать график этого я уже не знаю. Я бы поискал готовую библиотеку.
-
GRAF_COLLIOSTRO
- Сообщения: 115
- Зарегистрирован: 08 янв 2015, 14:32
Re: Построение графиков.
эммм... вообще такое можно самому без проблем реализовать. берём и рисуем:
получаем размеры поля, где будем рисовать
берём массив значений - это вертикальные координаты и горизонтальная координата - номер итерации.
цвет градуируем по значению. судя по картинке красный снизу ближе к нулю.... значит нужно делать что-то типа "255 красного минус текущее значение". Отслеживаем чтобы значение было не более 255. А чтобы не вылететь за пределы 255 в общем виде для таких графиков, лучше предварительно преобразовать массив значений по схеме 255 это 100%. и дальше обычная математическая пропорция: ищем максимальное значение в массиве - это 100%. все остальные подгоняются пропорционально с отбрасыванием дробной части.
В общем виде для движения вправо лучше тоже выполнить преобразование к количесву задействованых пикселей в длину. например, вы получаете ширину графика 150 пикселей. а значений в вашем массиве 200. делим тупо 200/150=1,33. получается нас будет интересовать каждое 1,33 значение и, соответсвенно, при итерации используем шаг 1,33 округляя его по правилам округления до целого. в итоге будут задействованы 1,3,4,5,7 и так далее элементы массива. (график будет не очень точным но красивым).
если значений меньше чем в отрисовке, можно по обратному пути растянуть график под нужный размер. например, ширина графика те же 150 пикселей. а значений 50. - невооружённым глазом видно пропорцию. нам нужно получить 150 значений из имеющихся 50. рисуйте вашу линию с шагом 3.
как вариант можно заполнять битмап прямыми вертикальными линиями с началом в точке 0, а второй конец привязывать к значению...
ну а как нарисовать линию с заданным цветом смотрим в уроках. было бы желание)
Самописный вывод графика даст вам безграничные возможности по его дизайну и варианту исполнения. Я бы не стал искать специализированный компонент. задачка школьная по сути.
получаем размеры поля, где будем рисовать
берём массив значений - это вертикальные координаты и горизонтальная координата - номер итерации.
цвет градуируем по значению. судя по картинке красный снизу ближе к нулю.... значит нужно делать что-то типа "255 красного минус текущее значение". Отслеживаем чтобы значение было не более 255. А чтобы не вылететь за пределы 255 в общем виде для таких графиков, лучше предварительно преобразовать массив значений по схеме 255 это 100%. и дальше обычная математическая пропорция: ищем максимальное значение в массиве - это 100%. все остальные подгоняются пропорционально с отбрасыванием дробной части.
В общем виде для движения вправо лучше тоже выполнить преобразование к количесву задействованых пикселей в длину. например, вы получаете ширину графика 150 пикселей. а значений в вашем массиве 200. делим тупо 200/150=1,33. получается нас будет интересовать каждое 1,33 значение и, соответсвенно, при итерации используем шаг 1,33 округляя его по правилам округления до целого. в итоге будут задействованы 1,3,4,5,7 и так далее элементы массива. (график будет не очень точным но красивым).
если значений меньше чем в отрисовке, можно по обратному пути растянуть график под нужный размер. например, ширина графика те же 150 пикселей. а значений 50. - невооружённым глазом видно пропорцию. нам нужно получить 150 значений из имеющихся 50. рисуйте вашу линию с шагом 3.
как вариант можно заполнять битмап прямыми вертикальными линиями с началом в точке 0, а второй конец привязывать к значению...
ну а как нарисовать линию с заданным цветом смотрим в уроках. было бы желание)
Самописный вывод графика даст вам безграничные возможности по его дизайну и варианту исполнения. Я бы не стал искать специализированный компонент. задачка школьная по сути.