Jump to content
View in the app

A better way to browse. Learn more.

FGX Native

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Добрый день, уважаемые разработчики. 

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

Компонент представляет собой слой, который можно наложить поверх редактируемого объекта. Например, TfgImage.  Для удобства расположения, можно воспользоваться якорями FlexBox - свойство RelativePosition.

image.png

При помощи точек выделения можно интерактивным путем расширить регион. А получить или указать его координаты можно при помощи свойства TfgRegionPicker.Region. При интерактивном изменении области вызывается событие OnChanged

При первом отображении компонента можно отцентрировать регион при помощи свойства RegionOptions.DefaultPlacement

Настройки внешнего вида

Компонент предлагает набор настроек, позволяющие настроить отображение отдельных элементов компонента, таких как:

  1. Точки выделения (Appearance.Grip). Здесь можно поменять размер точек и параметры кистей заливки и контура.
    image.png
  2. Регион (Appearance.Region). Здесь можно поменять параметры отрисовки пунктирной рамки области выделения.
  3. Затемнение вне региона (ContentShading). По умолчанию все, что вне области выделения затемняется. Это настраивается этим свойством. Можно указать базовый цвет затемнения и ее прозрачность.
    image.png

Кадрирование

В релизе 1.16.0.0 добавлены новые метод, позволяющие легко выполнить базовые преобразования. К одному из таких методов относится кадрирование битмапа по области TfgBitmap.CreateCropped (Чтобы воспользоваться методом нужно подключить модуль FGX.Bitmap.Helpers). Ниже представлен пример кода, выполняющий кадрирование изображения на основании координат региона, полученных от TfgRegionPicker. Пример доступен в разделе "Компоненты" -> "TfgRegionPicker" -> "Обрезание фотографии":

procedure TFormMain.btnCropTap(Sender: TObject);
var
  Region: TRectF;
  AssetBitmap: TfgAssetBitmapSet;
  Bitmap: TfgBitmap;
  CroppedBitmap: TfgBitmap;
  CroppedRect: TRectF;
  Scale: Single;
  DestRect: TRectF;
begin
  Region := rpCropRegion.Region.ToRectF;
  if TfgAssetsManager.Current.Find<TfgAssetBitmapSet>(R.Bitmap.PHOTO, AssetBitmap) and AssetBitmap.FindBitmap(Bitmap) then
  begin
    // Вычисляем область вывода битмапа в контроле.
    DestRect := TRectF.Create(FBitmap.Bounds).FitInto(pbOriginal.Bounds, Scale);
    
    // Корректируем положение региона.
    Region.Offset(-DestRect.TopLeft);
    
    // Масштабируем область согласно физическому размеру битмапа.
    CroppedRect.TopLeft := Region.TopLeft * Scale;
    CroppedRect.BottomRight := Region.BottomRight * Scale;
    
    // Кадрируем исходный битмап
    CroppedBitmap := Bitmap.CreateCropped(CroppedRect.Truncate);
    TfgAssetsManager.Current.AddBitmap('Cropped Image', CroppedBitmap);
  end;
end;

Результат работы представлен на видео ниже:

Спасибо за внимание.

4 Comments

Recommended Comments

Antonello

Active subscription

Great component!  😉

r3h0soft

Active subscription

Ждём больше новостей Ярослав!

Roman

Active subscription

(edited)

Отличный компонент!

Было бы здорово:

  1. реализовать сохранение пропорций области выделения при изменении ее размера
  2. открыть нереализованный пока тип области TfgRegionShapeKind.Circle
  3. реализовать ограничения размера области выделения (не может быть меньше заданных значений)

Edited by Roman

r3h0soft

Active subscription

Такой бы компонент для взаимодействия с изображением, ресайз, зум, поворот. Цены бы не было)

Recently Browsing 0

  • No registered users viewing this page.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.