uses
...GraphType, IntfGraphics, LCLType, LCLProc, LCLIntf ...
procedure TForm1.Button4Click(Sender: TObject);
var
bmp: TBitmap;
t: TLazIntfImage;
begin
bmp := TBitmap.Create;
try
bmp.LoadFromFile('test.bmp');
t := b.CreateIntfImage;
for y := 0 to 31 do
begin
ScanLine := t.getdatalinestart(y);
for x := 0 to 31 do
begin
// Bereken de tile-index
t := ((y shr 1) and not 3) + x shr 3;
// Vermenigvuldig deze met 32 (32 bytes per tile) en tel er de
// byte-index binnen de tile bij op. Doordat alles zo mooi met
// machten van twee werkt kunnen we zelfs de modulo vervangen door
// 'and'.
i := (t shl 5) + ((x shr 1) and 3) + ((y and 7) shl 2);
// Lees de juiste nibble uit de tile-data
b := Banner.TileData
;
if x and 1 = 1 then
b := b shr 4
else
b := b and $F;
// Pixel zetten
ScanLine^
end;
end;
bmp.LoadFromIntfImage(t);
finally
t.Free;
bmp.Free;
end;
end;