Wie vermutet.
Delphi-Quellcode:
ScanLines: TArray<PRGBTriple>;
P: PRGBTriple;
Bei pf8Bit hast du keine RGBTriples mehr, sondern nur noch 1 Byte pro Pixel (8 Bit halt). Die richtigen Typen wären also:
Delphi-Quellcode:
ScanLines: TArray<PByte>;
P: PByte;
Das hier:
if Assigned(P) then HSLtoRGB(H, S, L, P^.rgbtRed, P^.rgbtGreen, P^.rgbtBlue);
geht dann aber natürlich auch nicht mehr! Wenn du ein Bitmap mit Palette hast, hast du
keine Farbwerte mehr in den Pixeln stehen, sondern einen
Index in die Palette!! Statt also die Farben in die Pixeldaten zu schreiben, musst du dir für jeden Pixel eine Farbe aus der Palette aussuchen und deren Index in die Pixeldaten schreiben. Bitmaps mit Paletten sind da anders als die ohne.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)