Градиентная заливка с произвольным изменением цвета
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 18.12.19 11:37
Оценка:
Для заливки цветами с линейно меняющимися RGB-компонентами есть GradientFill в GDI и градиентные кисти в GDI+. А есть ли что-то готовое для заливки цветами, меняющимися по произвольному закону? Заливать нужно только прямоугольники вдоль одной из осей, каким-то образов передавая функциям заливки информацию об изменении цвета по ходу процесса. Ну и чтоб не слишком тормозило — в секунду нужно заливать десяток-другой прямоугольников площадью в несколько сотен точек каждый, не создавая заметной нагрузки на процессор.

Или готового нет, и такое делают только путем стыковки нужного количества одноцветных прямоугольников?
gradient fill градиент заливка цвет
Re: Градиентная заливка с произвольным изменением цвета
От: wildwind Россия  
Дата: 18.12.19 11:56
Оценка:
Здравствуйте, Евгений Музыченко, Вы писали:

ЕМ>для заливки цветами, меняющимися по произвольному закону?


И какому же, секрет?
Re: Градиентная заливка с произвольным изменением цвета
От: kov_serg Россия  
Дата: 18.12.19 12:00
Оценка: 8 (1)
Здравствуйте, Евгений Музыченко, Вы писали:

ЕМ>Для заливки цветами с линейно меняющимися RGB-компонентами есть GradientFill в GDI и градиентные кисти в GDI+. А есть ли что-то готовое для заливки цветами, меняющимися по произвольному закону? Заливать нужно только прямоугольники вдоль одной из осей, каким-то образов передавая функциям заливки информацию об изменении цвета по ходу процесса. Ну и чтоб не слишком тормозило — в секунду нужно заливать десяток-другой прямоугольников площадью в несколько сотен точек каждый, не создавая заметной нагрузки на процессор.


ЕМ>Или готового нет, и такое делают только путем стыковки нужного количества одноцветных прямоугольников?

Вообще-то есть битмапы и ими можно закрашивать (но в винде как всегда есть но)
Re[2]: Градиентная заливка с произвольным изменением цвета
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 18.12.19 12:01
Оценка:
Здравствуйте, wildwind, Вы писали:

W>И какому же, секрет?


Ну вот сейчас нужно, чтобы от начала шел постепенно светлеющий зеленый, где-то в районе 90% плавно переходил в желтый, а тот в районе 95% — в красный.
Re[3]: Градиентная заливка с произвольным изменением цвета
От: wildwind Россия  
Дата: 18.12.19 14:53
Оценка: 8 (1)
Здравствуйте, Евгений Музыченко, Вы писали:


ЕМ>Ну вот сейчас нужно, чтобы от начала шел постепенно светлеющий зеленый, где-то в районе 90% плавно переходил в желтый, а тот в районе 95% — в красный.


И чем GradientFill не подходит? Как раз для этого и существует. Разбей на полосы, заполни координаты вершин и за один вызов все нарисует.
Re[2]: Градиентная заливка с произвольным изменением цвета
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 18.12.19 15:41
Оценка:
Здравствуйте, kov_serg, Вы писали:

_>Вообще-то есть битмапы и ими можно закрашивать


Блин, не сообразил, спасибо. Вроде и очевидно, но надо сколько-нибудь плотно работать с графикой, чтоб в мозгах щелкнуло (я с нею практически не работаю).

_>(но в винде как всегда есть но)


А что не так? Мне даже масштабировать не нужно — достаточно сделать блок с нужными цветами, и выводить его в нужных местах.
Re[4]: Градиентная заливка с произвольным изменением цвета
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 18.12.19 17:33
Оценка:
Здравствуйте, wildwind, Вы писали:

W>И чем GradientFill не подходит? Как раз для этого и существует. Разбей на полосы, заполни координаты вершин и за один вызов все нарисует.


Хм, а я из описания и примеров понял, что больше двух вершин можно задавать только для треугольников. Попробовал — действительно, работает и для прямоугольника. Правда, вершины по ходу заливки приходится задавать зигзагом, но это не смертельно. Быстродействие приличное — 10 мкс при тактовой около 3 ГГц на прямоугольник 200x50 из трех фрагментов.
Re[3]: Градиентная заливка с произвольным изменением цвета
От: kov_serg Россия  
Дата: 18.12.19 18:23
Оценка:
Здравствуйте, Евгений Музыченко, Вы писали:

ЕМ>Блин, не сообразил, спасибо. Вроде и очевидно, но надо сколько-нибудь плотно работать с графикой, чтоб в мозгах щелкнуло (я с нею практически не работаю).


_>>(но в винде как всегда есть но)


ЕМ>А что не так? Мне даже масштабировать не нужно — достаточно сделать блок с нужными цветами, и выводить его в нужных местах.

Там в StretchBlt есть грабли при масштабировании (может рисовать чередующиеся черные полоски), но может в win10 уже исправили, хотя сомневаюсь.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.