Einzelnen Beitrag anzeigen

Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#11

Re: Bitmap als Pointer auf einem Display ausgeben

  Alt 1. Apr 2006, 21:18
Also, Windows bietet auch die GetDiBits-Funktion und hier wird darauf verwiesen, dass nur ein mehrfaches Scanline durchgeführt wird. Das gleiche kannst du natürlich auch mit einem TBitmap machen.
Dazu legst du einfach ein Array an, dass die Bilddaten aufnehmen kann ((Breite * Höhe) / 8) wobei du darauf achten musst, dass deine Breite und Höhe auch vielfache von 8 sind (wegen der Organisation in Bytes).
Nun kannst du über die Höhe der Bitmap iterieren, eine Zeile mittels Scanline in den Speicher laden und in dein Array kopieren, fertig.

Delphi-Quellcode:
var row : Integer;
    bits : TByteDynArray;
    buffer : PByteArray;
begin
  // wegen 1 Bit / pixel
  setLength(bits, (Bitmap.Height * Bitmap.Width) div 8);
  for row := 0 to Bitmap.Height - 1 do
    begin
      buffer := Bitmap.Scanline[row];
      CopyMemory(@bits[row * (Bitmap.Width div 8), buffer, (Bitmap.Width div 8)];
    end; // for row := 0 to Bitmap.Height - 1
end;
Das sollte es schon sein.
  Mit Zitat antworten Zitat