Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Из StringGreed в BitMap

78K
07 января 2012 года
Ol_Alex
1 / / 07.01.2012
Суть программы в следующем. Считываю из файла .bmp изображение InputImage в градациях серого. Заношу значения яркости в StringGreed1. Прделываю некие математические операции над элементами StringGreed1 и результат заношу в StringGreed2. Пока все в порядке. Теперь нужно это новое изображение OutputImage отрисовать -компонент (TImage) и сохранить в файл. Создаю указатель на TBitmap нужного размера и т.д. Вот вывод на экран
 
Код:
for (int y = 1; y < N+1; y++)
        for (int x = 1; x < M+1; x++)
        OutputImage->Canvas->Pixels[x-1][y-1]=StrToInt(StringGrid2->Cells[x][y]);

Ясно, что в битмапе 1 байт на пиксель, а тут int. Но изображение выводится, красного цвета. Я начал с этого кода, долго парился-все было только хуже. Нужно как-то задействовать TColor-сообщить, что это градации серого. Как это сделать?

ЗЫ только что еще попробовал
 
Код:
for (int y = 1; y < N+1; y++)
        {
        ptr2 = (Byte *)pBitmap2->ScanLine[y-1]; //Получаем указатель на строку
        for (int x = 1; x < M+1; x++)
                {
                 t= StrToInt(StringGrid2->Cells[x][y]);
                *(ptr2+x-1)= t;
                }
        }
OutputImage->Picture->Bitmap = pBitmap2;

Теперь оно не красное, а многоцветное и как бы выделение контуров. Надо как-то палитру передать новому изображению из старого?
И еще. Ввел 2 переменные, одна int, а вторая unsigned char (яркость изменяется в пределах 0-255), чтобы посмотреть значения, которые присвиваются *(ptr2+x-1).
 
Код:
int  i=*(ptr2+x-1);
unsigned char c=*(ptr2+x-1);


так вот
i получает то же значение, что и вводилось (например, 226), а c - символ, код которого на 64 меньше (например, 'в',который равен 162).

Решение
Все, разобрался, делается серая палитра и используется для нового битмапа
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог