Чтение онлайн

на главную

Жанры

Советы по Delphi. Версия 1.4.3 от 1.1.2001

Озеров Валентин

Шрифт:

 HM:THandle; {file-mapping handle}

 PF:pchar; {pointer to file view in memory}

 i,j: integer;

 Ofs:integer;

begin

 {открываем файл}

 HF:=FileOpen(FileName,fmOpenRead or fmShareDenyWrite);

 if HF<0 then Error('open file '''+FileName+'''');

 try

{создаем
объект-проецируемый файл}

HM:=CreateFileMapping(HF,nil,PAGE_READONLY,0,0,nil);

if HM=0 then Error('can''t create file mapping');

try

{собственно проецируем объект в адресное }

PF:=MapViewOfFile(HM,FILE_MAP_READ,0,0,0);

{получаем указатель на область памяти, в которую спроецирован файл}

if PF=nil then Error('can''t create map view of file');

try

{работаем с файлом как с областью памяти через указатель PF}

if PBitmapFileHeader(PF)^.bfType<>$4D42 then Error('file format');

Ofs:=PBitmapFileHeader(PF)^.bfOffBits;

with PBitmapInfo(PF+sizeof(TBitmapFileHeader))^.bmiHeader do begin

if (biSize<>40) or (biPlanes<>1) then Error('file format');

if (biCompression<>BI_RGB) or (biBitCount<>24) then Error('only true-color BMP supported');

{выделяем память под битмэп}

Allocate(biWidth,biHeight);

end;

for j:=0 to BI.bmiHeader.biHeight-1 do

for i:=0 to BI.bmiHeader.biWidth-1 do

{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 TMBitmap.GetPixel(X,Y:integer):PRGB;

begin

 if (X>=0) and (X<BI.bmiHeader.biWidth) and (Y>=0) and (Y<BI.bmiHeader.biHeight) then

 Result:=PRGB(PB+(Y)*FLineSize+X*3)

 else Result:=PRGB(PB);

end;

Если у вас на форме есть компонент TImage, то можно сделать так:

var BMP:TMBitmap;

B:TBitmap;

BMP.LoadFromFile();

B:=TBitmap.Create;

B.Handle:=BMP.Handle;

Image1.Picture.Bitmap:=B;

и загруженный битмэп появится на экране. 

Можно ли запустить OpenGL под Windows'95, и как поставлять его с программой?

Nomadic советует:

Надо сразу отметить, что для работы Microsoft OpenGL 1.1 требуется только наличие в системе двух динамических библиотек. Они различны для Windows 95 и для Windows NT. Они всегда инсталлируется вместе с системой, если эта система – Windows 95 OSR2 или более поздняя, или если это Windows NT. Однако, если Вы столкнулись с машиной, где OpenGL отсутствует (Windows 95 OSR1 и более ранние), то достаточно их взять из диcтpибyтива OSR2 (GLU32.DLL и OPENGL32.DLL) и записать в GetSystemDirectory – и запycкайте OpenGL-приложения на здоpовье.

Более эффективную реализацию OpenGL для Win32 от фирмы SGI я бы советовал стянуть с www.sgi.com или www.opengl.org (SGI OpenGL for Windows). Кроме того, оттуда же советую скачать дополнительную библиотеку функций-утилит, позволяющую упростить работу в OpenGL (GLUT). Возможно, что Вам понравится какой-нибудь API более высокого уровня, типа SCiTech MGL (www.scitechsoft.com). 

Как вывести на экран текст с 'красивым' обрезанием по длине (если текст не помещается на экране)?

Одной строкой 

Nomadic советует:

Используй вызов DrawTextEx, установив в параметре dwDTFormat значение DT_PATH_ELLIPSIS. 

При работе программ на Delphi 1 под Windows 95 в hicolor-режимах на иконках TBitBtn'ов обнаруживаются странные коричневые артефакты. Как от них избавиться?

Одной строкой 

Nomadic советует:

A: (AB): Залить фон битмапа синим цветом. 

Получение контекста устройства для элемента управления

Одной строкой

{Bitmap в TImage}

HDC := TImage.Picture.bitmap.canvas.handle;

DC – что нибудь с Canvas.handle 

Поделиться:
Популярные книги

Энфис 6

Кронос Александр
6. Эрра
Фантастика:
героическая фантастика
рпг
аниме
5.00
рейтинг книги
Энфис 6

Сердце Дракона. Предпоследний том. Часть 1

Клеванский Кирилл Сергеевич
Сердце дракона
Фантастика:
фэнтези
5.00
рейтинг книги
Сердце Дракона. Предпоследний том. Часть 1

Идеальный мир для Лекаря 8

Сапфир Олег
8. Лекарь
Фантастика:
юмористическое фэнтези
аниме
7.00
рейтинг книги
Идеальный мир для Лекаря 8

Под маской, или Страшилка в академии магии

Цвик Катерина Александровна
Фантастика:
юмористическая фантастика
7.78
рейтинг книги
Под маской, или Страшилка в академии магии

Мой любимый (не) медведь

Юнина Наталья
Любовные романы:
современные любовные романы
7.90
рейтинг книги
Мой любимый (не) медведь

Академия

Кондакова Анна
2. Клан Волка
Фантастика:
боевая фантастика
5.40
рейтинг книги
Академия

Играть, чтобы жить. Книга 3. Долг

Рус Дмитрий
3. Играть, чтобы жить
Фантастика:
фэнтези
киберпанк
рпг
9.36
рейтинг книги
Играть, чтобы жить. Книга 3. Долг

Виконт. Книга 4. Колонист

Юллем Евгений
Псевдоним `Испанец`
Фантастика:
фэнтези
попаданцы
аниме
7.50
рейтинг книги
Виконт. Книга 4. Колонист

Вечный Данж. Трилогия

Матисов Павел
Фантастика:
фэнтези
юмористическая фантастика
6.77
рейтинг книги
Вечный Данж. Трилогия

Мужчина не моей мечты

Ардова Алиса
1. Мужчина не моей мечты
Любовные романы:
любовно-фантастические романы
8.30
рейтинг книги
Мужчина не моей мечты

Последний Паладин. Том 7

Саваровский Роман
7. Путь Паладина
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Последний Паладин. Том 7

Истинная со скидкой для дракона

Жарова Анита
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Истинная со скидкой для дракона

Волк 7: Лихие 90-е

Киров Никита
7. Волков
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Волк 7: Лихие 90-е

Кровь Василиска

Тайниковский
1. Кровь Василиска
Фантастика:
фэнтези
попаданцы
аниме
4.25
рейтинг книги
Кровь Василиска