Программирование на Delphi и не только Как инвертировать изображение? (способ 2) | Программирование на Delphi и не только

Delphi FAQ >> Графика

При помощи данной процедуры на Delphi можно инвертировать изображение, хранящееся в Bitmap (только для 24 и 32-битных картинок):

//Только для 24 и 32-битных изображений!
procedure InvertBitmap(Bitmap: TBitmap);
var
  BytesPorScan: Integer;   vi_width, vi_height: Integer;   p: pByteArray;

begin
  if not (Bitmap.PixelFormat in [pf24Bit, pf32Bit]) then
    raise exception.create('Error, Format File not soported!');


  try
    BytesPorScan := Abs(Integer(Bitmap.ScanLine[1]) - Integer(Bitmap.ScanLine[0]));
  except
    raise exception.create('Error');
  end;
  for vi_height := 0 to Bitmap.Height - 1 do
  begin
    P := Bitmap.ScanLine[vi_height];
    for vi_width := 0 to BytesPorScan - 1 do
        P^[vi_width] := 255-P^[vi_width];
  end;
end;

Ссылки в тему:
  Как инвертировать изображение? (способ 1)

Хотите сделать оригинальный подарок? Тогда обратите внимание на пледы с логотипом. Здесь осуществляется продажа пледов, а также можно заказать их пошив и нанесение логотипа.