ImageEn, unit iexLayers




property Rotate: Double;


Specifies the layer rotation angle in degrees counter-clockwise.
Rotation and Resize cannot be used at the same time.

To allow resize after a layer rotation, it must be enacted, i.e. actually rotate the bitmap.
Conversely to allow rotation after a resize, the resizing must be enacted, actually resizing the bitmap.
To enact layer rotation, call LayersFixRotations.
To enact layer resizing, call LayersFixSizes.
Finally, multiple rotations can cause the bitmap to add an external, transparent border. To remove this border call LayersFixBorders.

 When rotation is handled by MouseInteractLayers (setting mlRotateLayers), you don't need to call LayersFixRotations, LayersFixSizes and LayersFixBorders.
 For Text layers, Rotate specifies the rotation of the text only. To rotate the border shape, set BorderRotate
 For angle layers, Rotate updates the start and end angles, which can lead to inaccuracy if frequently set, so you are better to directly use StartAngle, EndAngle or SweepAngle


Demo Description Demo Project Folder Compiled Demo
Layer Rotation Free rotation and resizing of layers using mouse interactions LayerEditing\RotateLayers\RotateLayers.dpr   
All Layer Editing Usage of image, shape, text, polygon and line layers LayerEditing\Layers_AllTypes\Layers.dpr   
Image Layer Editing Usage of image layers LayerEditing\Layers_Images\Layers.dpr   
Adding Text to Images Draw text onto images using text layers LayerEditing\Layers_TextOut\TextLayers.dpr   


// Rotate a line
ImageEnView1.CurrentLayer.Rotate := 235;

// Set rotation of all selected layers
for i := 0 to ImageEnView1.LayersCount - 1 do
  if ImageEnView1.Layers[i].Selected then
    ImageEnView1.Layers[i].Rotate := 90;
ImageEnView1.LayersFixRotations( LYR_SELECTED_LAYERS );

// Apply a "Paid" stamp to image
with ImageEnView1 do
  LayersAdd( 'PAID', 42, clRed, 'Arial Black', [fsBold] );
  CurrentLayer.Rotate := 30;
  TIETextLayer( CurrentLayer ).SizeToText();
  CurrentLayer.PosX := IELayer_Pos_HCenter;
  CurrentLayer.PosY := IELayer_Pos_VCenter;

See Also