int R = Color&0xFF;
int G = (Color&0xFF)>>8;
int B = (Color&0xFF)>>16;
Разложить цвет на RGB составляющие
Graphics::TBitmap *Bitmap;
В нем хранится какая-то картинка. Нужно узнать компоненты цвета какого-то определенного пикселя. Чтобы узнать цвет я пишу:
Color = Bitmap->Canvas->Pixels[j];
В итоге Color принимает значения о 0 (черный) до 16777215 (белый). А как теперь разложить это число на R, G и B? При чем я даже наперед знаю что R=G=B (битмап серый, все каналы в пикселе имеют одинаковые значения). Поэтому достаточно узнать либо R, либо G, либо B. Это решаемо?
Код:
Цвета (если смотреть на число в хекс-коде) видятся так:
GGBBRR, где XX - число от 00 до FF. А может есть и еще что-то встроенное типа "разложить на цвета". Так глубоко в битмапы не забирался.
Цитата: Leen
примерно так
Цвета (если смотреть на число в хекс-коде) видятся так:
GGBBRR, где XX - число от 00 до FF. А может есть и еще что-то встроенное типа "разложить на цвета". Так глубоко в битмапы не забирался.
Код:
int R = Color&0xFF;
int G = (Color&0xFF)>>8;
int B = (Color&0xFF)>>16;
int G = (Color&0xFF)>>8;
int B = (Color&0xFF)>>16;
GGBBRR, где XX - число от 00 до FF. А может есть и еще что-то встроенное типа "разложить на цвета". Так глубоко в битмапы не забирался.
Код:
int R = Color&0xFF;
int G = (Color>>8)&0xFF;
int B = (Color>>16)&0xFF;
int G = (Color>>8)&0xFF;
int B = (Color>>16)&0xFF;