du kannst das ganze auch mit scanline manuell machen. (muss natürlich noch angepasst werden wenn es nur für ein gewissen bereich sein soll)
Delphi-Quellcode:
procedure InvertBitmap(ABitmap: TBitmap);
type
TPixRow = array[0..65000] of TRGBTriple;
PPixRow = ^TPixRow;
var ARow: PPixRow;
LCountX, LCountY: Integer;
LPixel: PRGBTriple;
begin
ABitmap.PixelFormat := pf24bit;
for LCountY := 0 to ABitmap.Height - 1 do
begin
ARow := ABitmap.ScanLine[LCountY];
for LCountX := 0 to ABitmap.Width - 1 do
begin
LPixel := @ARow[LCountX];
LPixel.rgbtBlue := not(LPixel.rgbtBlue);
LPixel.rgbtGreen := not(LPixel.rgbtGreen);
LPixel.rgbtRed := not(LPixel.rgbtRed);
end;
end;
end;