The transform section defines the shape transformation to its parent coordinate system. It is a mandatory section and is represented by the NTransformSection class, an instance of which can be obtained from the TransformSection property. The following code example changes the width and height of a smart shape.
C# |
Copy Code
|
---|---|
sheet.TransformSection.Width.Value = 100; sheet.TransformSection.Height.Value = 200; |
Visual Basic |
Copy Code
|
---|---|
sheet.TransformSection.Width.Value = 100 sheet.TransformSection.Height.Value = 200 |
The transform section contains the following set of named cells:
Cell Name | Cell Type | Description | Notes |
---|---|---|---|
Width | Single | Controls the width of the shape local coordinate system. Accessible from the Width property. |
For a 1D shape it is typically expressed with a formula, which represents the distance between start and end points: |
Height | Single | Controls the height of the shape local coordinate system. Accessible from the Height property. | Usually a constant |
Angle | Single | Controls the rotation of the shape local coordinate system relative to the parent coordinate system. Accessible from the Angle property. |
For a 1D shape it is typically expressed with a formula, which represents the angle between the start and end points: |
PinX | Single | Defines the X coordinate of the pin point (in the parent coordinate system). Accessible from the PinX property. |
For a 1D shape it is typically expressed with a formula, which represents the X middle between start and end points: |
PinY | Single | Defines the Y coordinate of the pin point (in the parent coordinate system). Accessible from the PinY property. |
For a 1D shape it is typically expressed with a formula, which represents the Y middle between start and end points: |
LocPinY | Single | Defines the X coordinate of the pin point in the local coordinate system. Accessible from the LocPinX property. | Typically expressed with a formula, which represents half the width: Width*0.5 |
LocPinX | Single | Defines the Y coordinate of the pin point in the local coordinate system. Accessible from the LocPinY property. | Typically expressed with a formula, which represents half the height: Height*0.5 |
FlipX | Boolean | Specifies whether the local coordinate system is horizontally flipped relative to the parent coordinate system. Accessible from the FlipX property. | By default set to the false constant |
FlipY | Boolean | Specifies whether the local coordinate system is vertically flipped relative to the parent coordinate system. Accessible from the FlipY property. | By default set to the false constant |
The transform section defines an orthogonal transformation (a transformation, which preserves the orthogonality of transformed vectors). An orthogonal transformation can only be a combination of flip, rotate and translate operations - scaling is not allowed. The orthogonal transformation represented by the section is a matrix, which can be obtained from the Transform property.
To achieve scaling, all shape sheet content, which needs to be scaled along the the X or Y axes is represented with a formula in which the Width and Height cells are directly or indirectly referenced. For example the following code fills the local coordinate system with a rectangle:
C# |
Copy Code
|
---|---|
// create a new geometry, which draws a rectangle NGeometrySection geometry1 = new NGeometrySection("Geometry1", "Geometry1"); sheet.Sections.Add(geometry1); geometry1.AddMoveTo("Width*0", "Height*0"); geometry1.AddLineTo("Width*1", "Height*0"); geometry1.AddLineTo("Width*1", "Height*1"); geometry1.AddLineTo("Width*0", "Height*1"); geometry1.AddLineTo("Width*0", "Height*0"); |
Visual Basic |
Copy Code
|
---|---|
' create a new geometry, which draws a rectangle Dim geometry1 As New NGeometrySection("Geometry1", "Geometry1") sheet.Sections.Add(geometry1) geometry1.AddMoveTo("Width*0", "Height*0") geometry1.AddLineTo("Width*1", "Height*0") geometry1.AddLineTo("Width*1", "Height*1") geometry1.AddLineTo("Width*0", "Height*1") geometry1.AddLineTo("Width*0", "Height*0") |