Im TBitmap sind Zeilen 4Byte-Aligned,
aber ich glaube im DIBits nicht, bzw. zumindestens nicht in deinen PByte's.
Du müsstest also entweder in die Daten vorher die nötigen Ausrichtngs-Bytes einfügen
oder jede Zeile einzeln kopieren
oder dafür sorgen, dass es automatisch "ohne" Alignment ausgerichtet ist.
z.B. BitCount=32 oder eine Anzahl an Spalten, welche mit (BitCount/8) multipiziert immer 4 ergibt.
Hallo himitsu,
danke für deine Antwort. Der BitCount im BmpInfoHeader wird auf 32 gesetzt. In diesem Fall landet er in diesem Bereich
Code:
DISPLAY_COLORS_RGB:
begin
if (FGS_Format and DISPLAY_DEPTH_MASK) <> DISPLAY_DEPTH_8 then
exit;
if (((FGS_Format and DISPLAY_ALPHA_MASK) = DISPLAY_UNUSED_LAST)and
((FGS_Format and DISPLAY_ENDIAN_MASK) = DISPLAY_LITTLEENDIAN)) then
begin // Dieser BmpInfoHeader wird verwendet
FBmpInfoHeader.biBitCount := 32;
FBmpInfoHeader.biClrUsed := 0;
FBmpInfoHeader.biClrImportant := 0;
end else
begin
FBmpInfoHeader.biBitCount := 24;
FBmpInfoHeader.biClrUsed := 0;
FBmpInfoHeader.biClrImportant := 0;
end;
end;
Ich werde mir mal das Ganze genauer anschauen und versuche die Zeilen einzeln zu kopieren.