/// <summary> /// Private helper that takes an element and transforms it's 4 points /// into the InkCanvas's space /// </summary> private static ElementCornerPoints GetTransformedElementCornerPoints(InkCanvasInnerCanvas canvas, UIElement childElement) { Debug.Assert(canvas != null); Debug.Assert(childElement != null); Debug.Assert(canvas.CheckAccess()); ElementCornerPoints elementPoints = new ElementCornerPoints(); elementPoints.Set = false; if (childElement.Visibility != Visibility.Visible) { // // this little one's not worth it... // return(elementPoints); } // // get the transform from us to our parent InkCavas // GeneralTransform parentTransform = childElement.TransformToAncestor(canvas); // parentTransform.TryTransform(new Point(0, 0), out elementPoints.UpperLeft); parentTransform.TryTransform(new Point(childElement.RenderSize.Width, 0), out elementPoints.UpperRight); parentTransform.TryTransform(new Point(0, childElement.RenderSize.Height), out elementPoints.LowerLeft); parentTransform.TryTransform(new Point(childElement.RenderSize.Width, childElement.RenderSize.Height), out elementPoints.LowerRight); elementPoints.Set = true; return(elementPoints); }
/// <summary> /// Private helper that takes an element and transforms it's 4 points /// into the InkCanvas's space /// </summary> private static ElementCornerPoints GetTransformedElementCornerPoints(InkCanvasInnerCanvas canvas, UIElement childElement) { Debug.Assert(canvas != null); Debug.Assert(childElement != null); Debug.Assert(canvas.CheckAccess()); ElementCornerPoints elementPoints = new ElementCornerPoints(); elementPoints.Set = false; if (childElement.Visibility != Visibility.Visible) { // // this little one's not worth it... // return(elementPoints); } // // get the transform from us to our parent InkCavas // GeneralTransform parentTransform = childElement.TransformToAncestor(canvas); // REVIEW: any of the methods below may not actually perform the transformation // Do we need to do anything special in that scenario? parentTransform.TryTransform(new Point(0, 0), out elementPoints.UpperLeft); parentTransform.TryTransform(new Point(childElement.RenderSize.Width, 0), out elementPoints.UpperRight); parentTransform.TryTransform(new Point(0, childElement.RenderSize.Height), out elementPoints.LowerLeft); parentTransform.TryTransform(new Point(childElement.RenderSize.Width, childElement.RenderSize.Height), out elementPoints.LowerRight); elementPoints.Set = true; return(elementPoints); }
// Token: 0x06006D93 RID: 28051 RVA: 0x001F787C File Offset: 0x001F5A7C private void EnusreElementsBounds() { InkCanvasInnerCanvas innerCanvas = this._inkCanvas.InnerCanvas; if (!innerCanvas.IsMeasureValid || !innerCanvas.IsArrangeValid) { innerCanvas.UpdateLayout(); } }
/// <summary> /// Ensure the rendering is valid. /// Called by: /// SelectedElementsBounds /// </summary> private void EnusreElementsBounds() { InkCanvasInnerCanvas innerCanvas = _inkCanvas.InnerCanvas; // Make sure the arrange is valid. If not, we invoke UpdateLayout now. if (!innerCanvas.IsMeasureValid || !innerCanvas.IsArrangeValid) { innerCanvas.UpdateLayout(); } }
// Token: 0x06006DBD RID: 28093 RVA: 0x001F8814 File Offset: 0x001F6A14 private void HitTestElement(InkCanvasInnerCanvas parent, UIElement uiElement, List <UIElement> elementsToSelect) { LassoSelectionBehavior.ElementCornerPoints transformedElementCornerPoints = LassoSelectionBehavior.GetTransformedElementCornerPoints(parent, uiElement); if (transformedElementCornerPoints.Set) { Point[] points = this.GeneratePointGrid(transformedElementCornerPoints); if (this._lassoHelper.ArePointsInLasso(points, 60)) { elementsToSelect.Add(uiElement); } } }
/// <summary> /// Private helper that will turn an element in any nesting level into a stroke /// in the InkCanvas's coordinate space. This method calls itself recursively /// </summary> private void HitTestElement(InkCanvasInnerCanvas parent, UIElement uiElement, List <UIElement> elementsToSelect) { ElementCornerPoints elementPoints = LassoSelectionBehavior.GetTransformedElementCornerPoints(parent, uiElement); if (elementPoints.Set != false) { Point[] points = GeneratePointGrid(elementPoints); // // perform hit testing against our lasso // System.Diagnostics.Debug.Assert(null != _lassoHelper); if (_lassoHelper.ArePointsInLasso(points, _percentIntersectForElements)) { elementsToSelect.Add(uiElement); } } // // we used to recurse into the childrens children. That is no longer necessary // }
// Token: 0x06006DBE RID: 28094 RVA: 0x001F8850 File Offset: 0x001F6A50 private static LassoSelectionBehavior.ElementCornerPoints GetTransformedElementCornerPoints(InkCanvasInnerCanvas canvas, UIElement childElement) { LassoSelectionBehavior.ElementCornerPoints result = default(LassoSelectionBehavior.ElementCornerPoints); result.Set = false; if (childElement.Visibility != Visibility.Visible) { return(result); } GeneralTransform generalTransform = childElement.TransformToAncestor(canvas); generalTransform.TryTransform(new Point(0.0, 0.0), out result.UpperLeft); generalTransform.TryTransform(new Point(childElement.RenderSize.Width, 0.0), out result.UpperRight); generalTransform.TryTransform(new Point(0.0, childElement.RenderSize.Height), out result.LowerLeft); generalTransform.TryTransform(new Point(childElement.RenderSize.Width, childElement.RenderSize.Height), out result.LowerRight); result.Set = true; return(result); }