Есть числа (int) от 0 до 255, как мне их преобразовать в RGB чтобы 0 соответствовал черному цвету, а 255 желтому и градации менялись бы : черный-синий-красный-желтый?
Здравствуйте, MaxAK, Вы писали:
MAK>Есть числа (int) от 0 до 255, как мне их преобразовать в RGB чтобы 0 соответствовал черному цвету, а 255 желтому и градации менялись бы : черный-синий-красный-желтый?
Ты там что, флаг украинских неонацистов рисуешь?
Может так?
BYTE n;
COLORREF color = RGB( (n<128 ? n/2 : 255),
n,
(n<128 ? (n<64 ? n*4 : (128-n)*4) : 0));
Ну или что-то типа того...
Здравствуйте, BlackHeretic, Вы писали:
BH>Здравствуйте, MaxAK, Вы писали:
MAK>>Есть числа (int) от 0 до 255, как мне их преобразовать в RGB чтобы 0 соответствовал черному цвету, а 255 желтому и градации менялись бы : черный-синий-красный-желтый?
BH>Ты там что, флаг украинских неонацистов рисуешь?
BH>Может так?
BH>BYTE n;
BH>COLORREF color = RGB( (n<128 ? n/2 : 255),
BH> n,
BH> (n<128 ? (n<64 ? n*4 : (128-n)*4) : 0));
BH>Ну или что-то типа того...
не получаца так
Здравствуйте, MaxAK, Вы писали:
MAK>Есть числа (int) от 0 до 255, как мне их преобразовать в RGB чтобы 0 соответствовал черному цвету, а 255 желтому и градации менялись бы : черный-синий-красный-желтый?
Вот так
COLORREF c = RGB(0, 0, 0); // черный
for(int i=0; i<256; ++i){
c = RGB(0, 0, i); // плавный переход к синему
}
//здесь уже синий
for(int i=0; i<256; ++i){
c = RGB(i, 0, 255); // плавный переход к розовому
}
for(int i=255; i>=0; --i){
c = RGB(255, 0, i); // плавный переход к красному
}
//здесь уже красный
for(int i=0; i<256; ++i){
c = RGB(255, i, 0); // плавный переход к желтому
}
//здесь уже желтый
Шаг можно подобрать таким образом, чтобы уложиться в 256 градаций
Здравствуйте, MaxAK, Вы писали:
MAK>Здравствуйте, BlackHeretic, Вы писали:
BH>>Здравствуйте, MaxAK, Вы писали:
MAK>>>Есть числа (int) от 0 до 255, как мне их преобразовать в RGB чтобы 0 соответствовал черному цвету, а 255 желтому и градации менялись бы : черный-синий-красный-желтый?
BH>>Ты там что, флаг украинских неонацистов рисуешь?
BH>>Может так?
BH>>BYTE n;
BH>>COLORREF color = RGB( (n<128 ? n/2 : 255),
BH>> n,
BH>> (n<128 ? (n<64 ? n*4 : (128-n)*4) : 0));
BH>>Ну или что-то типа того...
MAK>не получаца так
Времени проверять почему — нет.
Не парься — ручками сделай массив и получай цвет по индексу.
Здравствуйте, MaxAK, Вы писали:
MAK>Есть числа (int) от 0 до 255, как мне их преобразовать в RGB чтобы 0 соответствовал черному цвету, а 255 желтому и градации менялись бы : черный-синий-красный-желтый?
Сделайте таблицу:
COLORREF index[256];
int i;
index[0] = RGB (0, 0, 0);
for (i=1;i<86;i++)
{
index[i] = RGB (0, 0, i*3);
index[i+85] = RGB (i*3, 0, 256-i*3);
index[i+170] = RGB (255, i*3, 0);
}
... << RSDN@Home 1.1.2 beta 2 >>