Invertieren eines Bitmaps |
|
| System | Win9x, WinNT, Win2000, WinXP, Vista, Win7 |
|---|---|
| Ab Delphi-Version | Delphi 1 |
| Letzte Änderung | 28.09.2010 |
Bei der Invention eines Bitmaps werden alle Farbwerte umgekehrt, so dass es aussieht, als hätte man ein Negativ vor sich.
Zuerst ist diese Typenvereinbarung erforderlich:
TFarbArray = array[0..0] of TRGBTriple;
pFarbArray = ^TFarbArray;
Dann kommt die Inventieren-Prozedur:
var
i,j:Integer; Reihe: ^TRGBTriple;
begin
for i:= 0 to Bitmap.Height-1 do
begin
Reihe:= Bitmap.Scanline[i];
for j:= 0 to Bitmap.Width-1 do
begin
Reihe^.rgbtred := not Reihe^.rgbtred;
Reihe^.rgbtBlue := not Reihe^.rgbtblue;
Reihe^.rgbtgreen := not Reihe^.rgbtgreen;
inc(Reihe);
end;
end;
bitmap.Assign(Bitmap);
end;
Die erste Schleife geht jedes Pixel in der Höhe durch, die Zweite jedes in der Breite. Dann wird jeder Fabwert mit dem not-Operator umgekehrt.
Über die Scanline-Funktion bietet das Internet ausreichend erklärenden Stoff.
Der Aufruf dieser Prozedur ist selten einfach:
begin
Inventieren(Image1.Picture.Bitmap);
end;