Friday, December 28, 2012

RGB and Alpha

Сегодня, работая с проектом консоли, реализованной на STM32F407, столкнулся с проблемой рисования графических элементов с процентным соотношением смешивания самого элемента и фонового графического изображения под ним (фона).

Рис. 7.1. Непрозрачный чайник
Непрозрачный чайник
Рис. 7.2. Прозрачный чайник
Прозрачный чайник
  


Для реализации данной задачи, достаточно одной очень простой формулы.




В проекте консоли, цвета представляются в формате RGB. Будем брать в процентном соотношении коэффициент прозрачности (от 0.0 до 1.0) и разность 1 и коэффициента прозрачности фона. Формулу применяем и для R, и для G, и для B. Вот что получилось в итоге:
NEW.R = FIGURE.R * ALPHA + BACKGROUND.R * (1 - ALPHA)
NEW.G = FIGURE.G * ALPHA + BACKGROUND.G * (1 - ALPHA)
NEW.B = FIGURE.B * ALPHA + BACKGROUND.B * (1 - ALPHA)
где NEW - это результирующий цвет смешивания, FIGURE - цвет фигуры (которая накладывается), BACKGROUND - цвет фона, на который накладывается фигура (изображение).
Вот собственно и всё.

No comments :

Post a Comment