Thema: Delphi Ein Bitmap invertieren

Einzelnen Beitrag anzeigen

Daniel B
(Gast)

n/a Beiträge
 
#1

Ein Bitmap invertieren

  Alt 20. Jul 2003, 10:52
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
  Mit Zitat antworten Zitat