Exemple #1
0
        public IEnumerable <AdornerPlacementValue> GetPositionTerms(AdornerCoordinateSpace space, UIElement adorner, ViewItem adornedElement, Vector zoom, Size computedAdornerSize)
        {
            double   width   = 0.0;
            ViewItem element = !(this._relativeTo == (ViewItem)null) ? this._relativeTo : adornedElement;

            if (element != (ViewItem)null)
            {
                width = space.GetBoundingBox(element).Width;
            }
            Vector targetPositionScale = ScaledSpace.GetTargetPositionScale(adorner);
            double left = (this._factor * width + this._offset) * targetPositionScale.X;

            yield return(new AdornerPlacementValue(AdornerPlacementDimension.Left, left));
        }
        public IEnumerable <AdornerPlacementValue> GetPositionTerms(AdornerCoordinateSpace space, UIElement adorner, ViewItem adornedElement, Vector zoom, Size computedAdornerSize)
        {
            double   height  = 0.0;
            ViewItem element = !(this._relativeTo == (ViewItem)null) ? this._relativeTo : adornedElement;

            if (element != (ViewItem)null)
            {
                height = space.GetBoundingBox(element).Height;
            }
            Vector targetPositionScale = ScaledSpace.GetTargetPositionScale(adorner);
            double top = (this._factor * height + this._offset) * targetPositionScale.Y;

            yield return(new AdornerPlacementValue(AdornerPlacementDimension.Top, top));
        }
        public IEnumerable <AdornerPlacementValue> GetSizeTerms(AdornerCoordinateSpace space, UIElement adorner, ViewItem adornedElement, Vector zoom, Size adornedElementFinalSize)
        {
            double   height  = 0.0;
            ViewItem element = (ViewItem)null;

            element = !(this._relativeTo == (ViewItem)null) ? this._relativeTo : adornedElement;
            if (element != (ViewItem)null)
            {
                height = space.GetBoundingBox(element).Height;
            }
            Vector targetSizeScale = ScaledSpace.GetTargetSizeScale(adorner, zoom);

            height = (this._factor * height + this._offset) * targetSizeScale.Y;
            yield return(new AdornerPlacementValue(AdornerPlacementDimension.Height, height));
        }
        private void SetAdornerBounds(UIElement childAdorner, ViewItem adornedElement, Point location, Vector scale)
        {
            AdornerCoordinateSpace @default = AdornerCoordinateSpaces.Default;
            Rect finalRect;

            if (adornedElement != (ViewItem)null)
            {
                finalRect = @default.GetBoundingBox(adornedElement);
            }
            else
            {
                Size desiredSize = childAdorner.DesiredSize;
                finalRect        = new Rect();
                finalRect.Width  = desiredSize.Width;
                finalRect.Height = desiredSize.Height;
            }
            finalRect.X       = location.X;
            finalRect.Y       = location.Y;
            finalRect.Width  *= Math.Abs(scale.X);
            finalRect.Height *= Math.Abs(scale.Y);
            childAdorner.Arrange(finalRect);
        }