Инвертирование изображения
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;
Комментарии