/// <summary> /// Implementation of <see cref="System.Windows.Freezable.GetCurrentValueAsFrozenCore(Freezable)">Freezable.GetCurrentValueAsFrozenCore</see>. /// </summary> /// <param name="sourceFreezable"></param> protected override void GetCurrentValueAsFrozenCore(Freezable sourceFreezable) { GeneralTransform3DTo2D transform = (GeneralTransform3DTo2D)sourceFreezable; base.GetCurrentValueAsFrozenCore(sourceFreezable); CopyCommon(transform); }
/// <summary> /// Implementation of <see cref="System.Windows.Freezable.CloneCurrentValueCore(Freezable)">Freezable.CloneCurrentValueCore</see>. /// </summary> /// <param name="sourceFreezable"></param> protected override void CloneCurrentValueCore(Freezable sourceFreezable) { GeneralTransform3DTo2D transform = (GeneralTransform3DTo2D)sourceFreezable; base.CloneCurrentValueCore(sourceFreezable); CopyCommon(transform); }
/// <summary> /// Projects the stored 3D points in to 2D. /// </summary> /// <param name="objectToViewportTransform">The transformation matrix to use</param> public void Project(GeneralTransform3DTo2D objectToViewportTransform) { Point projPoint1 = objectToViewportTransform.Transform(_p1); Point projPoint2 = objectToViewportTransform.Transform(_p2); _p1Transformed = new Point(projPoint1.X, projPoint1.Y); _p2Transformed = new Point(projPoint2.X, projPoint2.Y); }
internal GeneralTransform3DTo2DTo3D(GeneralTransform3DTo2D transform3DTo2D, GeneralTransform2DTo3D transform2DTo3D) { Debug.Assert(transform3DTo2D != null && transform2DTo3D != null); _transform3DTo2D = (GeneralTransform3DTo2D)transform3DTo2D.GetAsFrozen(); _transform2DTo3D = (GeneralTransform2DTo3D)transform2DTo3D.GetAsFrozen(); }
/// <summary> /// Provides the transform between this visual3D and the specified ancestor, or null /// if the transform does not exist. /// /// </summary> /// <param name="ancestor">Ancestor visual.</param> /// <returns>The transform from 3D to 2D</returns> internal GeneralTransform3DTo2D InternalTransformToAncestor(Visual ancestor) { Debug.Assert(ancestor != null); // get the transform out of 3D and in to 2D Viewport3DVisual containingViewport; Matrix3D projectionTransform; if (!M3DUtil.TryTransformToViewport3DVisual(this, out containingViewport, out projectionTransform)) { return null; } // get the transform from the Viewport3DVisual to the ancestor GeneralTransform transformIn2D = containingViewport.TransformToAncestor(ancestor); // package the two up in the transformTo2D GeneralTransform3DTo2D result = new GeneralTransform3DTo2D(projectionTransform, transformIn2D); result.Freeze(); return result; }
/// <summary> /// Clones values that do not have corresponding DPs /// </summary> /// <param name="transform"></param> private void CopyCommon(GeneralTransform3DTo2D transform) { _projectionTransform = transform._projectionTransform; _transformBetween2D = transform._transformBetween2D; }