Для экономии места на дискете в оставшихся примерах я буду использовать ограниченный набор растров, хотя для многих примеров можно подобрать и более подходящие картинки. Если для вашей фирмы требуется http://www.web-pharus.ru/it_consulting.html то обращайтесь к профессионалам сюда: www.web-pharus.ru.
Этот и некоторые следующие примеры будут крутиться вокруг астрономической темы.
Файл растра с картой Земли я взял из DirectX SDK фирмы Microsoft. Функция чтения растра основана на коде для методов класса TBitmap:
U функция возвращает размеры образа и указатель на массив образа function ReadBitmap(const FileMame : string;
var sWldth, tHeight: GLsizei): pointer;
const
szh - SizeOf (TBitmapFileHeader),- // размеры заголовка растра szi - SizeOf (TBitmapInfoHeader); type TRGB - record
R, G, В : GLbyte; end;
TWrap - Array [O..01 of TRGB;
var
BmpFile : File;
bfh : TBitmapFileHeader; // заголовок файла bmi : TBitmapInfoHeader; x, size: GLint;
temp: GLbyte; // для перестановки красного и синего begin
AssignFile (BmpFile, FileName); Reset (BmpFile, 1);
Size := FileSize (BmpFile) — szh - szi;// заголовки в растр не включа*™ Blockread(BmpFile, bfh, szh); // считываем заголовки BlockRead (BmpFile, bmi, szi);
If Bfh.bfType <> $4D42 then begin // формат не подходит MessageBox (Window, 'Invalid Bitmap', 'Error*, МБ_ОК); Result nil; Exit;
end;
sWidth := bmi.biWidth; // из заголовка узнаем размеры собственно растрвщ tHeight := bmi.biHeight;
GetMem (Result, Size); // выделяем память для массива образа BlockRead[BmpFile, ResultA, Size); // считываем собственно растр For х := 0 to sWidth*tHeight-l do // переставить синий и красный With TWrsp(resulf) [х] do begin
temp R;
R := B;
В := temp;
end; end;
Опубликовал vovan666
September 23 2013 08:18:45 ·
0 Комментариев ·
3533 Прочтений ·
• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •
Комментарии
Нет комментариев.
Добавить комментарий
Рейтинги
Рейтинг доступен только для пользователей.
Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.
Нет данных для оценки.
Гость
Вы не зарегистрированны? Нажмите здесь для регистрации.