ImageEn, unit imageenview

TImageEnView.OnLayerMoveSize

TImageEnView.OnLayerMoveSize


Declaration

property OnLayerMoveSize: TIELayerMoveSizeEvent;


Description

Occurs whenever a layer is moved or resized. This event only fires on user actions (not programmatic changes). It will occur numerous times as the user moves the mouse.
Allows the layer size and position to be controlled and adjusted.


Examples

// Force all layers to be created at 200 x 200
procedure TfrmMain.ImageEnView1MoveSizeLayer(Sender: TObject; layer: integer; event: TIELayerEvent; var PosX, PosY, Width, Height: Double);
begin
  if event = ielCreating then
  begin
    Width  := 200;
    Height := 200;
  end;
end;


// Force all layers to be centered on the image horizon
procedure TfMain.ImageEnView1MoveSizeLayer(Sender: TObject; layer: integer; event: TIELayerEvent; var PosX, PosY, Width, Height: Double);
begin
  PosY := ( ImageEnView1.Layers[0].Height - Height ) / 2;
end;


// Don't allow layer to be sized beyond boundaries of layer 1
procedure TMainForm.ImageEnView1LayerMoveSize(Sender: TObject; layer: Integer;
    event: TIELayerEvent; var PosX, PosY, Width, Height: Double);
var
  r: TRect;
  lyr1: TIELayer;
begin
  if layer > 1 then
  begin
    lyr1 := ImageEnView1.Layers[1];
    if PosX < lyr1.PosX then
      PosX := lyr1.PosX;
    if PosY < lyr1.PosY then
      PosY := lyr1.PosY;
    if PosX + Width > lyr1.PosX + lyr1.Width then
      Width := lyr1.PosX + lyr1.Width - PosX;
    if PosY + Height > lyr1.PosY + lyr1.Height then
      Height := lyr1.PosY + lyr1.Height - PosY;
  end;
end;


// Allow line layers to be made longer (horizontally or vertically), but not sized
procedure TForm1.ImageEnView1LayerMoveSize(Sender: TObject; layer: Integer;
    event: TIELayerEvent; var PosX, PosY, Width, Height: Double);
var
  isHorz: Boolean;
begin
  if ( event = ielResizing ) and ( ImageEnView1.Layers[layer] is TIELineLayer ) then
  begin
    isHorz := ImageEnView1.Layers[layer].Width > ImageEnView1.Layers[layer].Height;
    if isHorz then
    begin
      PosY   := ImageEnView1.Layers[layer].PosY;
      Height := ImageEnView1.Layers[layer].Height
    end
    else
    begin
      PosX   := ImageEnView1.Layers[layer].PosX;
      Width  := ImageEnView1.Layers[layer].Width;
    end;
  end;
end;


See Also

OnNewLayer
OnLayerNotifyEx
AspectRatioLocked
LayersResizeAspectRatio