Leadtools.Annotations Namespace > AnnObject Class : PhysicalTransform Property |
public virtual Matrix PhysicalTransform {get;}
'Declaration Public Overridable ReadOnly Property PhysicalTransform As Matrix
public virtual Matrix PhysicalTransform {get;}
get_PhysicalTransform();
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.
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
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!"); }
Target Platforms: Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows Server 2008 (Server Core not supported), Windows Server 2008 R2 (Server Core supported with SP1 or later), Windows Server 2003 SP2