Bei mir geht es jetzt so:
Delphi-Quellcode:
procedure TForm1.DrawLinesFast(l: TLines);
var
bm: TBitmap;
i: Integer;
w,h: integer;
p: pointer;
begin
h:=length(l);
if h=0 then exit;
w:=length(l[0].b);
if w=0 then exit;
bm := TBitmap.Create;
Try
bm.PixelFormat := pf1bit;
bm.Width:=w*8;
bm.Height:=h;
bm.Canvas.Refresh;
for i:=0 to h-1 do
begin
p:=bm.ScanLine[i];
move(l[i].b[0],p^,w);
end;
Im.Picture.Assign(bm);
Finally
bm.Free;
End;
end;
Eine Sache wundert mich: Die Zeilen sind im Speicher umgekehrt angeordnet, d.h. die unterste Zeile mit der höchsten Zeilennummer steht an der niedrigsten Speicheradresse.