public override void EnsureVisible(IAdorner adorner, bool scrollNow) { IClickable clickable = adorner as IClickable; if (adorner == null || clickable == null || !(adorner.ElementSet.PrimaryElement is BaseFrameworkElement)) { return; } Matrix identity = Matrix.Identity; AdornerSet adornerSet = adorner.AdornerSet as AdornerSet; Matrix matrix; Visual visual; if (adornerSet != null) { matrix = adornerSet.Matrix; visual = (Visual)this.Artboard.AdornerLayer; } else { matrix = this.platformSurface.TransformToVisual(adorner.ElementSet.PrimaryElement.ViewObject, (IViewObject)this.HitTestRoot); visual = (Visual)this.ViewRootContainer; } Point clickablePoint = clickable.GetClickablePoint(matrix); Rect rect = new Rect(clickablePoint.X - 3.0, clickablePoint.Y - 3.0, 6.0, 6.0); this.EnsureVisibleInternal(visual, rect, scrollNow); }
public bool CanClickOnAdorner(IAdorner adorner, SceneView sceneView, IViewObject rootViewObject, ref Point clickablePoint) { if (this.AdornerLayer == null || !this.AdornerLayer.IsVisible) { return(false); } bool flag = false; IClickable clickable = adorner as IClickable; if (clickable != null) { Matrix transformMatrix = ((AdornerSet)adorner.AdornerSet).GetTransformMatrix(rootViewObject); clickablePoint = clickable.GetClickablePoint(transformMatrix); Window mainWindow = Application.Current.MainWindow; Matrix matrixFromTransform = VectorUtilities.GetMatrixFromTransform(sceneView.ComputeTransformToVisual(rootViewObject, (Visual)mainWindow)); Point point = clickablePoint * matrixFromTransform; flag = this.GetHitAdorner((Visual)mainWindow, point) == adorner; } return(flag); }
public override void EnsureVisible(IAdorner adorner, bool scrollNow) { IClickable clickable = adorner as IClickable; if (adorner == null || clickable == null || !(adorner.ElementSet.PrimaryElement is BaseFrameworkElement)) { return; } Matrix matrix = Matrix.Identity; Visual visual = adorner.ElementSet.PrimaryElement.ViewObject.PlatformSpecificObject as Visual; AdornerSet adornerSet = adorner.AdornerSet as AdornerSet; if (adornerSet != null) { matrix = adornerSet.Matrix; visual = (Visual)this.Artboard.AdornerLayer; } Point clickablePoint = clickable.GetClickablePoint(matrix); Rect rect = new Rect(clickablePoint.X - 3.0, clickablePoint.Y - 3.0, 6.0, 6.0); this.EnsureVisibleInternal(visual, rect, scrollNow); }