Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > Нарисовать серыми оттенками - как?


Автор: Liebe23 21.9.2007, 02:12
Добрый день,  

буду очень признательна за помощь.

Задача: Есть массив целых чисел от 0 до 256. Нужно нарисовать оттенками серого (от белого до черного) точки, цвет соответствует числу от 0 до 256. 

Вопросов, собственно, два:

1. Поскольку цвета представлены в 16-ричной СС, то я решила использовать функцию IntToHex. Но она выдает в кач-ве результата строку типа AnsiString.  А для рисования на форме нужен тип TColor.
Как можно перевести один тип в другой, может, есть возможность как-то их сопоставить?

2. У серого цвета интенсивности всех составляющих (RGB) равны. Чтобы получить цвет серый, нужно составить из просто 16-ричного числа  - строчку (повторив его 3 раза), да? И как потом эту строчку пересести в TColor?

Я не могу найти ответов в хелпе к Борланду, может, просто, все нужно делать как-то совершенно иначе? 

Спасибо заранее smile   

Автор: Mihhail 21.9.2007, 05:33
Цитата(Liebe23 @  21.9.2007,  06:12 Найти цитируемый пост)
Задача: Есть массив целых чисел от 0 до 256. Нужно нарисовать оттенками серого (от белого до черного) точки, цвет соответствует числу от 0 до 256. 

Не  придумывай себе лишних трудностей.
Код

TColor  Color;
int i, Ms[Max];  //массив целых чисел

for( i = 0; i < Max; i ++  ){
    Color = (TColor)RGB( Ms[ i ], Ms[ i ], Ms[ i ] );  //Очередной оттенок
    .................. 
     //Здесь вывод на экран используя Color
    }

Автор: zkv 21.9.2007, 10:02
Цитата(Liebe23 @  21.9.2007,  02:12 Найти цитируемый пост)
У серого цвета интенсивности всех составляющих (RGB) равны. Чтобы получить цвет серый, нужно составить из просто 16-ричного числа  - строчку (повторив его 3 раза), да? И как потом эту строчку пересести в TColor?

неправильный подход - хранить информацию втройне.
Целесообразней создать палитру, а в растре хранить индексы в палитре - изображение уменьшится примерно раза в три.
Реализовать просто - почитай описание формата RGB.

Автор: Liebe23 23.9.2007, 00:29
спасибо всем smile все работает smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)