Exemple #1
0
        public IVisualRenderElement GetRenderElement(IRenderElementFactory factory)
        {
            if (visualRenderElement == null)
            {
                renderElementFactory = factory;
                visualRenderElement  = factory.CreateVisualRenderElement(this);

                visualRenderElement.Background       = VisualBackground;
                visualRenderElement.Bounds           = VisualBounds;
                visualRenderElement.Clip             = VisualClip;
                visualRenderElement.ClipToBounds     = VisualClipToBounds;
                visualRenderElement.IsHitTestVisible = VisualIsHitTestVisible;
                visualRenderElement.IsVisible        = VisualIsVisible;
                visualRenderElement.Opacity          = VisualOpacity;
                visualRenderElement.Transform        = VisualTransform;

                object content = CreateRenderElementContentOverride(factory);

                if (content != null)
                {
                    renderChildrenOffset = 1;
                    visualRenderElement.InsertChild(0, content);
                }

                int index = 0;
                foreach (Visual child in VisualChildren)
                {
                    child.GetRenderElement(factory);
                    visualRenderElement.InsertChild(renderChildrenOffset + index, child.GetRenderElement(factory));
                    index++;
                }
            }

            return(visualRenderElement);
        }
Exemple #2
0
        private IVisualRenderElement CreateRenderElement(IRenderElementFactory factory)
        {
            IVisualRenderElement visualRenderElement = factory.CreateVisualRenderElement(this);

            visualRenderElement.Background       = VisualBackground;
            visualRenderElement.Bounds           = VisualBounds;
            visualRenderElement.ClipToBounds     = VisualClipToBounds;
            visualRenderElement.IsHitTestVisible = VisualIsHitTestVisible;
            visualRenderElement.IsVisible        = VisualIsVisible;
            visualRenderElement.Opacity          = VisualOpacity;
            visualRenderElement.Transform        = VisualTransform;

            visualRenderElement.Content = CreateRenderElementContentOverride(factory);

            int index = 0;

            foreach (Visual child in VisualChildren)
            {
                child.GetRenderElement(factory);
                visualRenderElement.InsertChild(index, child.GetRenderElement(factory));
                index++;
            }

            return(visualRenderElement);
        }
Exemple #3
0
        public void AddVisualChild(Visual child)
        {
            if (child.VisualParent == this)
            {
                return;
            }

            if (child.VisualParent != null)
            {
                child.VisualParent.RemoveVisualChild(child);
            }

            child.VisualParent = this;
            visualChildren.Add(child);

            int renderChildIndex = visualChildren.Count - 1;

            if (visualRenderElement != null)
            {
                visualRenderElement.InsertChild(renderChildrenOffset + renderChildIndex, child.GetRenderElement(renderElementFactory));
            }

            InvalidateHitTestBounds();
        }