Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как создать DIB?


Unknown user ©   (2003-07-30 18:49:00) 

То есть битмап с заданными шириной, высотой и остальными параметрами по умолчанию, аналогично тому как это используется в классе TBitmap.


iXuSs   (2003-07-30 21:45:00) [1]

Могу посоветовать такой код:

procedure DIBCreate(var ScrBitmap: TBitMap; W, H: Integer; Canvas: TCanvas);
var
BInfo: tagBITMAPINFO;
SX, SY: Integer;
Scr: Pointer;
begin
SX := W;
SY := H;
With BInfo.bmiHeader do
begin
biSize := SizeOf(tagBITMAPINFOHEADER);
biWidth := SX;
biHeight := -SY;
biPlanes := 1;
biBitCount := 32;
biCompression := BI_RGB;
end;
ScrBitmap := TBitmap.Create;
ScrBitmap.Handle := CreateDIBSection(Canvas.Handle, BInfo, DIB_RGB_COLORS,
( Scr, SX * SY * 4)

Могу посоветовать такой код:

procedure DIBCreate(var ScrBitmap: TBitMap; W, H: Integer; Canvas: TCanvas);
var
BInfo: tagBITMAPINFO;
SX, SY: Integer;
Scr: Pointer;
begin
SX := W;
SY := H;
With BInfo.bmiHeader do
begin
biSize := SizeOf(tagBITMAPINFOHEADER);
biWidth := SX;
biHeight := -SY;
biPlanes := 1;
biBitCount := 32;
biCompression := BI_RGB;
end;
ScrBitmap := TBitmap.Create;
ScrBitmap.Handle := CreateDIBSection(Canvas.Handle, BInfo, DIB_RGB_COLORS,
Scr, 0, 0);
ZeroMemory(Scr, SX * SY * 4);
end;

procedure DIBDelete(var ScrBitmap: TBitMap);
begin
ScrBitmap.FreeImage;
ScrBitmap.Destroy;
end;


Игорь Шевченко   (2003-07-30 19:02:00) [2]

Наверное, также, как это сделано в классе TBitmap - исходники вроде доступны


Наверх

Титульная страница Поиск, карта сайта Написать письмо