Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Зеркальное отражение BMP

Delphi , Графика и Игры , Bitmap

Зеркальное отражение BMP

Оформил: DeeCo
Автор: http://www.swissdelphicenter.ch

procedure flip_horizontal(Quelle, Ziel: TBitMap);
 begin
   Ziel.Assign(nil);
   Ziel.Width  := Quelle.Width;
   Ziel.Height := Quelle.Height;
   StretchBlt(Ziel.Canvas.Handle, 0, 0, Ziel.Width, Ziel.Height, Quelle.Canvas.Handle,
     0, Quelle.Height, Quelle.Width, Quelle.Height, srccopy);
 end;

 procedure flip_vertikal(Quelle, Ziel: TBitMap);
 begin
   Ziel.Assign(nil);
   Ziel.Width  := Quelle.Width;
   Ziel.Height := Quelle.Height;
   StretchBlt(Ziel.Canvas.Handle, 0, 0, Ziel.Width, Ziel.Height, Quelle.Canvas.Handle,
     Quelle.Width, 0, Quelle.Width, Quelle.Height, srccopy);
 end;

 procedure TForm1.Button1Click(Sender: TObject);
 var
   temp: TBitMap;
 begin
   temp := TBitMap.Create;
   try
     temp.Assign(Image1.Picture.BitMap);
     flip_vertikal(Temp, Image1.Picture.Bitmap);
   finally
     Temp.Free;
   end;
 end;

Программа на Delphi, которая реализует два процедура для поворота изображения горизонтально и вертикально соответственно. Изображение загружается из контрола TImage с именем Image1 и хранится в объекте TBitMap, называемом temp.

Вот разбивка кода:

procedure flip_horizontal(Quelle, Ziel: TBitMap); // процедура для поворота изображения горизонтально
begin
  Ziel.Assign(nil);
  Ziel.Width    := Quelle.Width;
  Ziel.Height   := Quelle.Height;
  StretchBlt(Ziel.Canvas.Handle, 0, 0, Ziel.Width, Ziel.Height,
    Quelle.Canvas.Handle, 0, Quelle.Height, Quelle.Width, Quelle.Height, srccopy); // копирование пикселей из исходного изображения в целевое
end;

procedure flip_vertikal(Quelle, Ziel: TBitMap); // процедура для поворота изображения вертикально
begin
  Ziel.Assign(nil);
  Ziel.Width    := Quelle.Width;
  Ziel.Height   := Quelle.Height;
  StretchBlt(Ziel.Canvas.Handle, 0, 0, Ziel.Width, Ziel.Height,
    Quelle.Canvas.Handle, Quelle.Width, 0, Quelle.Width, Quelle.Height, srccopy); // копирование пикселей из исходного изображения в целевое
end;

procedure TForm1.Button1Click(Sender: TObject); // обработчик события нажатия кнопки
var
  temp: TBitMap;
begin
  temp := TBitMap.Create; // создание временного объекта TBitMap
  try
    temp.Assign(Image1.Picture.Bitmap); // загрузка изображения из контрола Image1 в временный объект
    flip_vertikal(temp, Image1.Picture.Bitmap); // поворот изображения вертикально
  finally
    Temp.Free; // освобождение ресурсов временного объекта
  end;
end;

В процедуре flip_horizontal изображение отражается горизонтально, копируя пиксели из исходного изображения в целевое в горизонтальном направлении.

В процедуре flip_vertikal изображение отражается вертикально, копируя пиксели из исходного изображения в целевое в вертикальном направлении.

Обработчик события нажатия кнопки создает временный объект TBitMap, загружает изображение из контрола Image1 в него, поворачивает изображение вертикально и освобождает ресурсы временного объекта.

Статья описывает программу на языке Delphi, которая может зеркально отражать изображения в направлении вертикали и горизонтали с помощью процедур flip_horizontal и flip_vertikal.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Bitmap ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-05-01 13:48:40/0.0031850337982178/0