Products | Support | Email a link to this topic. | Send comments on this topic. | Back to Introduction - All Topics | Help Version 19.0.5.2
|
Leadtools.Annotations Namespace > AnnObject Class : PhysicalTransform Property |
public virtual Matrix PhysicalTransform {get;}
'Declaration Public Overridable ReadOnly Property PhysicalTransform As Matrix
The physical transformation System.Drawing.Drawing2D.Matrix of an AnnObject is the result of multiplying the object Transform matrix by the ContainerTransform matrix.
This matrix can be used to transform points from logical (in the object coordinate) coordinates to physical coordinates. For example, the annotation toolkit uses this matrix during hit-testing.
This example will perform various transformation on an annotation object then shows its transformation matrix.
Imports Leadtools Imports Leadtools.Annotations Imports Leadtools.Codecs Imports Leadtools.WinForms Imports Leadtools.Drawing Private Sub AnnObject_PhysicalTransform(ByVal obj As AnnObject) ' this example only works with line objects If TypeOf obj Is AnnLineObject Then Dim line As AnnLineObject = CType(IIf(TypeOf obj Is AnnLineObject, obj, Nothing), AnnLineObject) ' show the logical coordinates of this line Dim pts As PointF() = {line.StartPoint.ConvertTo(line.Container.UnitConverter, AnnUnit.Pixel).ToPointF(), line.EndPoint.ConvertTo(line.Container.UnitConverter, AnnUnit.Pixel).ToPointF()} Console.WriteLine("Logical coordinates: {0}, {1}", pts(0), pts(1)) ' show the physical coordinates of this line Dim mat As Matrix = line.PhysicalTransform Try Dim transformer As AnnTransformer = New AnnTransformer(line.Container.UnitConverter, mat) pts = transformer.PointToPhysical(pts) Console.WriteLine("Physical coordinates: {0}, {1}", pts(0), pts(1)) Finally CType(mat, IDisposable).Dispose() End Try Else Console.WriteLine("Not an annotation line object!") End If End Sub
using Leadtools; using Leadtools.Annotations; using Leadtools.Codecs; using Leadtools.WinForms; using Leadtools.Drawing; private void AnnObject_PhysicalTransform(AnnObject obj) { // this example only works with line objects if(obj is AnnLineObject) { AnnLineObject line = obj as AnnLineObject; // show the logical coordinates of this line PointF[] pts = { line.StartPoint.ConvertTo(line.Container.UnitConverter, AnnUnit.Pixel).ToPointF(), line.EndPoint.ConvertTo(line.Container.UnitConverter, AnnUnit.Pixel).ToPointF() }; Console.WriteLine("Logical coordinates: {0}, {1}", pts[0], pts[1]); // show the physical coordinates of this line using(Matrix mat = line.PhysicalTransform) { AnnTransformer transformer = new AnnTransformer(line.Container.UnitConverter, mat); pts = transformer.PointToPhysical(pts); Console.WriteLine("Physical coordinates: {0}, {1}", pts[0], pts[1]); } } else Console.WriteLine("Not an annotation line object!"); }