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

Ваш аккаунт

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

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

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

Graphics::TBitmap* и ScanLine

386
23 сентября 2006 года
newcss
297 / / 05.04.2005
Вообщем достаточно тривиальная задачка, сравнить две картинки.
Код:
...
Graphics::TBitmap* mask[5]; // массив указателей на картнки
...
mask[0]= new Graphics::TBitmap;
mask[1]= new Graphics::TBitmap;
mask[2]= new Graphics::TBitmap;
mask[3]= new Graphics::TBitmap;
mask[4]= new Graphics::TBitmap;
 
mask[0]->LoadFromFile("1.bmp");
mask[1]->LoadFromFile("2.bmp");
mask[2]->LoadFromFile("3.bmp");
mask[3]->LoadFromFile("4.bmp");
mask[4]->LoadFromFile("5.bmp");
...
Byte *ptr_screen=NULL;
Byte *ptr_mask=NULL;
 
ptr_screen= (Byte *)mask[0]->ScanLine[0];
ptr_mask = (Byte *)mask[1]->ScanLine[0];
...


Вообщем вся лажа в том, что последняя строчка всегда выдает \0. Т.е. функция не считывает строчку из картинки. Не подскажите из-за чего такая лажа?
Хотя mask[0]->ScanLine[0] вот эта строчка отменно работает
386
23 сентября 2006 года
newcss
297 / / 05.04.2005
Чудеса выходят =-(... строчку из других указателей массива читает... а у первого нет.... Причем у массива с номером 1, ширину картинки получает, а строчку считывать не хочет.. чудеса...
-----
Воде разобрался:
Вообщем если ширина картинки маленькая, около 100-150 пикселей, то данная функция работать не хочет =(
386
24 сентября 2006 года
newcss
297 / / 05.04.2005
 
Код:
char **Line = new char*[300];
int i=0;
     for(i = 0; i<300; i++)
     Line = (char*)mask[0]->ScanLine;


Народ, почему первые 60 строк нормально читаются, потом 100 строк \0
а потом опять нормально?
309
24 сентября 2006 года
el scorpio
1.1K / / 19.09.2006
Цитата:
Народ, почему первые 60 строк нормально читаются, потом 100 строк \0, а потом опять нормально?


Что содержится в файлах - не знаю, посему могу предположить следующее.
Данные читаются нормально. Просто в этих ста строках первым элементом строки является пиксель с нулевым цветом - соответственно, в текстовом представлении эта последовательность байтов отображается как пустая строка.
Индексируйте объект ScanLine побайтно.

386
24 сентября 2006 года
newcss
297 / / 05.04.2005
Вообщем трабла вот в чем...
Формат пиксела 24 бита... Char же 8 бит... Из-за этого фигня какая-то походу.
Поставил формат картинки в 8бит. вроде помогло но не до конЦа.... Всеравно возникают небольшие глюки. Но уже попровимые.
Битовый не удобен по причине сравнивать их не очень удобно =).
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог