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.
// 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;