У меня есть программа, которая генерирует изображение в оттенках серого. Grayshading для каждого пикселя задается следующим кодом съязвил:C++ Расчет цвета от grayscape до цвета
//loop over all pixel
*PixelColorPointer = Number * 0x010101;
в этом случае Number
представляет собой целое число в диапазоне от 0 до 255. который генерирует все градации серого цвета от черного до белого.
Что я пытаюсь сделать, это иметь цветное изображение (для того, чтобы иметь false colors), но я действительно не понимаю вычисления с шестнадцатеричным значением. Я понял, назначил ли я, например. Number * 0xFFFFFF
У меня есть градиент/разнообразие от белого до желтого.
Может кто-нибудь объяснить мне, как работает расчет этих цветов? Пожалуйста, помните, что (как уже было сказано) я хочу/должен передать переменную Number
, чтобы получить разнообразие.
'Number * 0x010101' это элегантный способ превращения (скажем) 5 в 0x00050505 - то есть, он задает г, г , b - число. То, что я делал в прошлом, вычисляет таблицу с 256 входами с нужными цветами в ней.Ваша «текущая таблица» (если она была сохранена, а не вычисленная) будет 0x00000000, 0x00010101, 0x00020202, 0x00030303 .... 0x00FEFEFE, 0x00FFFFFF. Итак, сделайте таблицу с 256 ячейками из 4-байтных целых чисел. Установите каждый цвет в RGB, затем используйте 'Number' в качестве индекса.' * PixelColorPointer = colArray [Number] ' – enhzflep