Для заливки цветами с линейно меняющимися RGB-компонентами есть GradientFill в GDI и градиентные кисти в GDI+. А есть ли что-то готовое для заливки цветами, меняющимися по произвольному закону? Заливать нужно только прямоугольники вдоль одной из осей, каким-то образов передавая функциям заливки информацию об изменении цвета по ходу процесса. Ну и чтоб не слишком тормозило — в секунду нужно заливать десяток-другой прямоугольников площадью в несколько сотен точек каждый, не создавая заметной нагрузки на процессор.
Или готового нет, и такое делают только путем стыковки нужного количества одноцветных прямоугольников?
Здравствуйте, Евгений Музыченко, Вы писали:
ЕМ>Для заливки цветами с линейно меняющимися RGB-компонентами есть GradientFill в GDI и градиентные кисти в GDI+. А есть ли что-то готовое для заливки цветами, меняющимися по произвольному закону? Заливать нужно только прямоугольники вдоль одной из осей, каким-то образов передавая функциям заливки информацию об изменении цвета по ходу процесса. Ну и чтоб не слишком тормозило — в секунду нужно заливать десяток-другой прямоугольников площадью в несколько сотен точек каждый, не создавая заметной нагрузки на процессор.
ЕМ>Или готового нет, и такое делают только путем стыковки нужного количества одноцветных прямоугольников?
Вообще-то есть битмапы и ими можно закрашивать (но в винде как всегда есть но)
Re[2]: Градиентная заливка с произвольным изменением цвета
ЕМ>Ну вот сейчас нужно, чтобы от начала шел постепенно светлеющий зеленый, где-то в районе 90% плавно переходил в желтый, а тот в районе 95% — в красный.
И чем GradientFill не подходит? Как раз для этого и существует. Разбей на полосы, заполни координаты вершин и за один вызов все нарисует.
Re[2]: Градиентная заливка с произвольным изменением цвета
Здравствуйте, kov_serg, Вы писали:
_>Вообще-то есть битмапы и ими можно закрашивать
Блин, не сообразил, спасибо. Вроде и очевидно, но надо сколько-нибудь плотно работать с графикой, чтоб в мозгах щелкнуло (я с нею практически не работаю).
_>(но в винде как всегда есть но)
А что не так? Мне даже масштабировать не нужно — достаточно сделать блок с нужными цветами, и выводить его в нужных местах.
Re[4]: Градиентная заливка с произвольным изменением цвета
Здравствуйте, wildwind, Вы писали:
W>И чем GradientFill не подходит? Как раз для этого и существует. Разбей на полосы, заполни координаты вершин и за один вызов все нарисует.
Хм, а я из описания и примеров понял, что больше двух вершин можно задавать только для треугольников. Попробовал — действительно, работает и для прямоугольника. Правда, вершины по ходу заливки приходится задавать зигзагом, но это не смертельно. Быстродействие приличное — 10 мкс при тактовой около 3 ГГц на прямоугольник 200x50 из трех фрагментов.
Re[3]: Градиентная заливка с произвольным изменением цвета
Здравствуйте, Евгений Музыченко, Вы писали:
ЕМ>Блин, не сообразил, спасибо. Вроде и очевидно, но надо сколько-нибудь плотно работать с графикой, чтоб в мозгах щелкнуло (я с нею практически не работаю).
_>>(но в винде как всегда есть но)
ЕМ>А что не так? Мне даже масштабировать не нужно — достаточно сделать блок с нужными цветами, и выводить его в нужных местах.
Там в StretchBlt есть грабли при масштабировании (может рисовать чередующиеся черные полоски), но может в win10 уже исправили, хотя сомневаюсь.