Внешний вид сайта:

Горизонтальное отражение Bitmap

Одной из основных задач любой графической программы является зеркальное отражение графики. Следующий совет показывает, как в Delphi реализовать зеркальное отражение по горизонтали растровое изображение.

Во-первых определим два типа:

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;

Комментарии

Нет комментариев. Ваш будет первым!