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

Пример зума и панорамирования с использованием TVertScrollBox

Delphi , Технологии , ActiveX

Зуммирование (Zoom) и панорамирование (Pan) являются полезными функциями для мобильных приложений, которые позволяют пользователям ближе рассмотреть детали или перемещаться по контенту. В этом примере мы покажем, как реализовать зуммирование и панорамирование с использованием TVertScrollBox в Delphi.

Для начала, давайте создадим простой проект с формой, содержащей TVertScrollBox:

unit Unit1;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.ExtCtrls;

type
  TForm1 = class(TForm)
    VertScrollBox1: TVertScrollBox;
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  // Создаем несколько кнопок для зума и панорамирования
  with TVertScrollBox1 do
  begin
    Align := alClient;
    ScrollBars := ssVertical;
    Parent := Self;

    for var i := 0 to 5 do
    begin
      with TButton.Create(VertScrollBox1) do
      begin
        Name := 'Button' + IntToStr(i);
        Top := i * 50;
        Left := 0;
        Width := ClientWidth;
        Height := 40;
        Caption := 'Кнопка ' + IntToStr(i);
        OnClick := ButtonClick;
      end;
    end;
  end;
end;

procedure TForm1.ButtonClick(Sender: TObject);
begin
  // Логика обработки нажатия кнопки
end;

end.

Теперь, чтобы добавить зуммирование и панорамирование к TVertScrollBox, мы можем использовать компонент TScaleImage из пакета Vcl.ExtCtrls. Этот компонент позволяет масштабировать изображение и перемещать его в пределах своего клиента.

Сначала, поместим TScaleImage внутрь TVertScrollBox:

unit Unit1;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.ExtCtrls;

type
  TForm1 = class(TForm)
    VertScrollBox1: TVertScrollBox;
    ScaleImage1: TScaleImage;
    procedure FormCreate(Sender: TObject);
    procedure ButtonClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  // Создаем несколько кнопок для зума и панорамирования
  with TVertScrollBox1 do
  begin
    Align := alClient;
    ScrollBars := ssVertical;
    Parent := Self;

    ScaleImage1.Align := alClient;
    ScaleImage1.Parent := Self;

    for var i := 0 to 5 do
    begin
      with TButton.Create(VertScrollBox1) do
      begin
        Name := 'Button' + IntToStr(i);
        Top := i * 50;
        Left := 0;
        Width := ClientWidth;
        Height := 40;
        Caption := 'Кнопка ' + IntToStr(i);
        OnClick := ButtonClick;
      end;
    end;
  end;
end;

procedure TForm1.ButtonClick(Sender: TObject);
begin
  // Логика обработки нажатия кнопки
end;

end.

Теперь, чтобы добавить зуммирование и панорамирование, мы можем использовать процедуры ZoomByPercent и PanToPoint соответственно:

procedure TForm1.ButtonClick(Sender: TObject);
begin
  case Sender.Name[6] of
    '0': // Увеличение масштаба на 20%
      ScaleImage1.ZoomByPercent(20, [poCenter]);
    '1': // Перемещение вверх на 50 пикселей
      ScaleImage1.PanToPoint(PointF.Create(0, -50), [poCenter]);
    '2': // Уменьшение масштаба на 20%
      ScaleImage1.ZoomByPercent(-20, [poCenter]);
    '3': // Перемещение вниз на 50 пикселей
      ScaleImage1.PanToPoint(PointF.Create(0, 50), [poCenter]);
    '4': // Восстановление исходного масштаба и положения
      ScaleImage1.Reset;
  end;
end;

В этом примере мы создаем шесть кнопок с нумерацией от 0 до 5. Каждая кнопка вызывает процедуру ButtonClick, которая обрабатывает нажатие соответствующей кнопки. Например, кнопка с номером 0 увеличивает масштаб изображения на 20% вокруг центра, а кнопка с номером 1 перемещает изображение вверх на 50 пикселей.

В качестве альтернативного решения можно использовать компонент TScrollingWinControl из пакета Vcl.ExtCtrls, который также позволяет реализовать зуммирование и панорамирование с помощью свойств Zoom

Создано по материалам из источника по ссылке.

Этот текст является инструкцией по созданию проекта в Delphi для демонстрации функций зуммирования (Zoom) и панорамирования (Pan) с использованием компонента TVertScrollBox. В примере создается форма с вертикальным полосой прокрутки, содержащей несколько


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

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




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


:: Главная :: ActiveX ::


реклама


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

Время компиляции файла: 2024-08-19 13:29:56
2024-10-22 09:34:16/0.003619909286499/0