Inverser les couleurs d'une image

Contenu du snippet

{ Cette procédure utilise la propriété ScanLine[] qui permet
 d'avoir une vitesse presque trente foix supérieure que l'acces simple à 
 la propriété Pixels[] utilisant les méthodes API GetPixel() et SetPixel() }
procedure InvertBitmapColors(const Bmp: TBitmap);
type
  TLine = array[Word] of TRGBTriple;
  PLine = ^TLine;
var
  X, Y: Integer;
  OldPixelFmt: TPixelFormat;
  Line: PLine;
begin
  OldPixelFmt := Bmp.PixelFormat;
  { Mise du bitmap en 32 bits par pixel :
  pas de changement de l'octet alpha s'il existait. }
  Bmp.PixelFormat := pf24bit;
  for Y := 0 to Bmp.Height -1 do
  begin
    Line := Bmp.ScanLine[Y];
    for X := 0 to Bmp.Width -1 do
    begin
      { Inversion des couleurs. }
      Line[X].rgbtRed := not Line[X].rgbtRed;
      Line[X].rgbtGreen := not Line[X].rgbtGreen;
      Line[X].rgbtBlue := not Line[X].rgbtBlue;
    end;
  end;
  { Restauration du mode de pixel d'origine. }
  Bmp.PixelFormat := OldPixelFmt;
end;


Compatibilité : Delphi 5

Disponible dans d'autres langages :

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.