Вот такая проблема.
Для 24 битного цвета легко менять яркость точки, ибо каждый цвет занимает ровно байт (а байт он и есть байт, его легко умножить на альфу - бери и умножай).
Для 16 битного цвета 5:6:5 уже голову сломал.
Выделять каждую составляющую, а потом паковать ее обратно - как-то не очень.
Пытался подобрать некое число, чтобы уможать сразу 16 битный цвет, а компоненты сами бы собой изменялись синхронно и правильно. (Тем более, я выбрал ширину альфа канала всего 4 бита и таких констант было бы не так много).
Неужто в виндах в 16 битном цвете вот так с каждым пикселом мучаются? Тогда он по идее, должен медленнее 24 битного работать? Вернее, процессорного времени больше отбирать...