예제 #1
0
        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);
        }
예제 #2
0
        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);
        }
예제 #3
0
        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);
        }