Sorry,
ich find das ist ein gutes Beipiel, wie man es
nicht machen sollte.
Zitat:
bRed := PixelColor;
bei aktivierter Bereichsprüfung machts bum, da du versuchst, einem Byte einen longint-Wert versuchst zuzuweisen.
warum nutzt du hier nicht GetRValue etc? und fürs zurückrechnen
RGB?
bzw. warum nicht gleich über scanline gehen? ist viel schneller und du sparst dir die Umwandlung der Farbwerte.
Dein Aufruf ist falsch, du schaffst dir ein Speicherloch.
bei Invert erstellst du eine Bitmap und "assigned" die dann zur Image.bitmap damit wird die bei Invertbmp erstellte Bitmap nie wieder freigegeben.
(kannst du mit Memproof ausprobieren)
Wenn der Aufruf von InvertBMP so bleiben soll, mußt du trotzdem beim Buttonclick einen kleinen Umweg gehen.
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
Var bmp:Tbitmap;
begin
bmp:=InvertBmp(Image2.Picture.Bitmap);
Image1.Picture.Bitmap.Assign(bmp);
bmp.Free;
end;
Mfg Frank