Горизонтальное отражение Bitmap
Во-первых определим два типа:
type TRGBArray = array[0..0] of TRGBTriple; pRGBArray = ^TRGBArray;
Далее сам код:
procedure HorizontalReflection(const Bitmap: TBitmap); var i, j, w: Integer; rowin, rowout: pRGBArray; begin w := Bitmap.Width*SizeOf(TRGBTriple); GetMem(rowIn, w); try for j:= 0 to Bitmap.Height-1 do begin Move(Bitmap.Scanline[j]^, rowin^, w); rowout := Bitmap.Scanline[j]; for i := 0 to Bitmap.Width-1 do rowout[i] := rowin[Bitmap.Width-1-i]; end; Bitmap.Assign(Bitmap); finally FreeMem(rowin); end; end;
Вызов этой процедуры будет выглядеть примерно так:
procedure TForm1.Button1Click(Sender: TObject); begin HorizontalReflection(Image1.Picture.Bitmap); end;
Комментарии