biSize:=sizeof(BI.bmiHeader);
biWidth:=SX;
biHeight:=SY;
biPlanes:=1;
biBitCount:=24;
biCompression:=BI_RGB;
biSizeImage:=0;
biXPelsPerMeter:=0;
biYPelsPerMeter:=0;
biClrUsed:=0;
biClrImportant:=0;
FLineSize:=(biWidth+1)*3 and
if
DC:=CreateDC('DISPLAY',nil
{замечательная функция (см.HELP), возвращает HBITMAP, позволяет сразу разместить выделяемый битмэп в спроецированном файле, что позволяет ускорять работу и экономить память при генерировании большого битмэпа}
{!} BM:=CreateDIBSection(DC,BI, DIB_RGB_COLORS, pointer(PB), nil
DeleteDC(DC); {в PB получаем указатель на битмэп-----^^}
if
end
end
end
{эта процедура загружает из файла true-color'ный битмэп}
procedure
var
HF:integer; {file handle}
HM:THandle; {file-mapping handle}
PF:pchar; {pointer to file view in memory}
i,j: integer;
Ofs:integer;
begin
{открываем файл}
HF:=FileOpen(FileName,fmOpenRead or
if
try
{создаем объект-проецируемый файл}
HM:=CreateFileMapping(HF,nil
if
try
{собственно проецируем объект в адресное }
PF:=MapViewOfFile(HM,FILE_MAP_READ,0,0,0);
{получаем указатель на область памяти, в которую спроецирован файл}
if
try
{работаем с файлом как с областью памяти через указатель PF}
if
Ofs:=PBitmapFileHeader(PF)^.bfOffBits;
with
if
if
{выделяем память под битмэп}
Allocate(biWidth,biHeight);
end
for
for
{Pixels - это property, возвр. указатель на соотв. RGBTriple в битмэпе}
Pixels[i,j]^.Tr:=ParrRGBTriple(PF+j*FLineSize+Ofs)^[i];
finally
UnmapViewOfFile(PF);
end
finally
CloseHandle(HM);
end
finally
FileClose(HF);
end
end
{эта функция - реализация Pixels read}
function
begin
if
Result:=PRGB(PB+(Y)*FLineSize+X*3)
else
end
Если у вас на форме есть компонент TImage, то можно сделать так:
var
B:TBitmap;
…
BMP.LoadFromFile(…
B:=TBitmap.Create;
B.Handle:=BMP.Handle;
Image1.Picture.Bitmap:=B;
и загруженный битмэп появится на экране.
Бьерн Страуструп , Бьёрн Страуструп , Валерий Федорович Альмухаметов , Ирина Сергеевна Козлова
Программирование, программы, базы данных / Базы данных / Программирование / Учебная и научная литература / Образование и наука / Книги по IT