На форме размещаем TImage. В него загружаем BMP.
// Отражение по горизонтали
Function ReflexionH(source: TBitMap): TBitMap;
var i, j: Integer;
begin
Result:=TBitmap.Create;
Result.Height:=source.Height;
Result.Width:=source.Width;
With source do
begin
for i:=0 to Width do
for j:=0 to Height do
Result.Canvas.Pixels[i, j]:=Canvas.Pixels[Width-i-1,j];
end;
end;
// Отражение по вертикали
Function ReflexionV(source: TBitMap): TBitMap;
var i, j: Integer;
begin
Result:=TBitmap.Create;
Result.Height:=source.Height;
Result.Width:=source.Width;
With source do
begin
for i:=0 to width do
for j:=0 to Height do
Result.Canvas.Pixels[i, j]:=Canvas.Pixels[i,Height-j-1];
end;
end;
// Отражение и по вертикали и по горизонтали
Function ReflexionHV(source: TBitMap): TBitMap;
var i, j: Integer;
begin
Result:=TBitmap.Create;
Result.Height:=source.Height;
Result.Width:=source.Width;
With source do
begin
for i:=0 to width do
for j:=0 to Height do
Result.Canvas.Pixels[i, j]:=Canvas.Pixels[Width-i-1,Height-j-1];
end;
end;
Пример использования:
procedure TForm1.Button1Click(Sender: TObject);
begin
Image1.Picture.Assign(ReflexionHV(Image1.Picture.Bitmap));
end;
Просмотров: 7368
3. йцу
разумнее и быстрее использовать Bitmap.Canvas.CopyRect
но тем, кто ищет такие решения в инете, это ведь не поможет))? |
2. Заблудился_в_Сети
Следует заметить, что работа с массивом Pixels[] медленна, если изображение большое по разрешению.
|
Copyright © 2008 - 2018 Программирование на Delphi для начинающих и не только.
Полнота авторских прав на все материалы, опубликованные на сервере DelphiDevelop.ru принадлежит их авторам.
Перепечатка материалов разрешается с указанием авторства и гиперссылки на первоисточник информации.