Hallo,
hiermit kann man die Farben eines Bitmaps invertieren.
Hier bin ich davon ausgegangen, das auf dem Formular zwei Images liegen und Image1 wurde bereits ein Image über den
OI zugewiesen.
Delphi-Quellcode:
function InvertBmp(SourceBitmap: TBitmap): TBitmap;
var
iFor, iFor2: LongInt;
TempBitmap: TBitmap;
bRed, bGreen, bBlue: Byte;
PixelColor: LongInt;
begin
TempBitmap := TBitmap.Create;
TempBitmap.Width := SourceBitmap.Width;
TempBitmap.Height := SourceBitmap.Height;
for iFor := 0 to SourceBitmap.Width -1 do
begin
for iFor2 := 0 to SourceBitmap.Height -1 do
begin
PixelColor := ColorToRGB(SourceBitmap.Canvas.Pixels[iFor, iFor2]);
bRed := PixelColor;
bGreen := PixelColor shr 8;
bBlue := PixelColor shr 16;
bRed := 255 -bRed;
bGreen := 255 -bGreen;
bBlue := 255 -bBlue;
TempBitmap.Canvas.Pixels[iFor, iFor2] := (bRed shl 8 +bGreen) shl 8 +bBlue;
end;
end;
Result := TempBitmap;
end;
Aufrufen dann so:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
Image2.Picture.Bitmap.Assign(InvertBmp(Image1.Picture.Bitmap));
end;
Jetzt einfach auf den Button klicken, dann wird das Bild/Bitmap aus dem Image1 invertiert und dann auch invertiert im zweiten Image also Image2 angezeigt.
Grüsse, Daniel