Карта сайтаСсылкиКонтакты

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

PDF Печать
Статьи

Одной из основных задач любой графической программы является зеркальное отражение графики. Следующий совет показывает, как в 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;

 

Добавить комментарий


Защитный код
Обновить