Инвертирование изображения
type TFarbArray = array[0..0] of TRGBTriple; pFarbArray = ^TFarbArray;
Затем запишем процедуру инвертирования Bitmap:
procedure InvertBitmap(const Bitmap: TBitmap); var i,j:Integer; Series: ^TRGBTriple; begin for i:= 0 to Bitmap.Height-1 do begin Series:= Bitmap.ScanLine[i]; for j:= 0 to Bitmap.Width-1 do begin Series^.rgbtRed := not Series^.rgbtRed; Series^.rgbtBlue := not Series^.rgbtBlue; Series^.rgbtGreen := not Series^.rgbtGreen; inc(Series); end; end; Bitmap.Assign(Bitmap); end;
Первый цикл проходит через каждый пиксел по высоте, а второй – каждый пиксел по ширине растрового изображения. Затем каждый пиксел инвертируется при помощи оператора NOT.
Вызов этой процедуры очень прост:
procedure TForm1.Button1Click(Sender: TObject); begin InvertBitmap(Image1.Picture.Bitmap); end;
Комментарии