Esempio n. 1
0
        protected override object CreateContentRenderElementOverride(IRenderElementFactory factory)
        {
            ITextBlockRenderElement textBlockRenderElement;

            if (textBlockRenderElements.TryGetValue(factory, out textBlockRenderElement))
            {
                return(textBlockRenderElement);
            }

            textBlockRenderElement = factory.CreateTextBlockRenderElement(this);

            textBlockRenderElement.Bounds        = new Rect(VisualBounds.Size);
            textBlockRenderElement.FontFamily    = this.FontFamily;
            textBlockRenderElement.Foreground    = this.Foreground;
            textBlockRenderElement.FontSize      = this.FontSize;
            textBlockRenderElement.FontStyle     = this.FontStyle;
            textBlockRenderElement.FontStretch   = this.FontStretch;
            textBlockRenderElement.FontWeight    = this.FontWeight;
            textBlockRenderElement.Text          = this.Text;
            textBlockRenderElement.TextAlignment = this.TextAlignment;
            textBlockRenderElement.TextTrimming  = this.TextTrimming;
            textBlockRenderElement.TextWrapping  = this.TextWrapping;

            textBlockRenderElements.Add(factory, textBlockRenderElement);

            return(textBlockRenderElement);
        }
Esempio n. 2
0
 public HtmlDrawingGeometryRenderElement(IRenderElementFactory factory, RenderQueue renderQueue, SvgValueConverter converter) :
     base(SvgDocument.CreateElement("path"), factory, renderQueue, converter)
 {
     this.factory     = factory;
     this.renderQueue = renderQueue;
     this.converter   = converter;
 }
Esempio n. 3
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);
        }
Esempio n. 4
0
 private WpfVisualRenderElement(wpf::System.Windows.Controls.Canvas container, IRenderElementFactory factory, WpfValueConverter converter) :
     base(container)
 {
     this.container = container;
     this.factory   = factory;
     this.converter = converter;
 }
Esempio n. 5
0
 public WpfImageRenderElement(IRenderElementFactory factory, WpfValueConverter converter)
 {
     this.factory   = factory;
     this.converter = converter;
     image          = new wpf::System.Windows.Controls.Image();
     image.Stretch  = wpf::System.Windows.Media.Stretch.Fill;
 }
Esempio n. 6
0
 public HtmlDrawingShapeRenderElement(HTMLElement htmlElement, IRenderElementFactory factory, RenderQueue renderQueue, SvgValueConverter converter) :
     base(htmlElement)
 {
     this.factory     = factory;
     this.renderQueue = renderQueue;
     this.converter   = converter;
 }
 public WpfTextBlockRenderElement(IRenderElementFactory factory, WpfValueConverter converter)
 {
     this.factory         = factory;
     this.converter       = converter;
     textBlock            = new wpf::System.Windows.Controls.TextBlock();
     textBlock.Foreground = wpf::System.Windows.Media.Brushes.Red;
 }
Esempio n. 8
0
 public HtmlDrawingImageRenderElement(IRenderElementFactory htmlRenderElementFactory, RenderQueue renderQueue, SvgValueConverter svgValueConverter) :
     base(SvgDocument.CreateElement("image"))
 {
     this.factory     = htmlRenderElementFactory;
     this.renderQueue = renderQueue;
     this.converter   = svgValueConverter;
 }
 public HtmlDrawingContainerRenderElement(IRenderElementFactory factory, RenderQueue renderQueue, SvgValueConverter converter) :
     base(SvgDocument.CreateElement("g"), renderQueue)
 {
     this.factory     = factory;
     this.renderQueue = renderQueue;
     this.converter   = converter;
 }
Esempio n. 10
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);
        }
Esempio n. 11
0
 public RenderElementDrawingContext(IContainerRenderElement container, IRenderElementFactory factory)
 {
     this.container         = container;
     this.factory           = factory;
     this.availableChildren = container.Children?.ToList();
     this.children          = new List <object>();
 }
Esempio n. 12
0
 public WpfDrawingImageElement(WpfRenderElementFactory factory, WpfValueConverter converter)
 {
     this.factory   = factory;
     this.converter = converter;
     this.element   = new wpf::System.Windows.Controls.Image {
         Stretch = wpf::System.Windows.Media.Stretch.Fill
     };
 }
Esempio n. 13
0
        public HtmlDrawingTextRenderElement(IRenderElementFactory factory, RenderQueue renderQueue, SvgValueConverter svgValueConverter) :
            base(SvgDocument.CreateElement("text"))
        {
            this.factory     = factory;
            this.renderQueue = renderQueue;
            this.converter   = svgValueConverter;

            HtmlElement.SetAttribute("dy", "1em");
        }
Esempio n. 14
0
        public void RemoveRenderElement(IRenderElementFactory factory)
        {
            visualRenderElements.Remove(factory);

            foreach (Visual child in VisualChildren)
            {
                child.RemoveRenderElement(factory);
            }
        }
Esempio n. 15
0
        public object GetRenderResource(IRenderElementFactory factory)
        {
            if (renderResource == null)
            {
                renderResource        = factory.CreateTransformRenderResource();
                renderResource.Matrix = Value;
            }

            return(renderResource);
        }
Esempio n. 16
0
        public WpfTextBoxRenderElement(IRenderElementFactory factory, WpfValueConverter converter)
        {
            this.factory   = factory;
            this.converter = converter;
            bounds         = Rect.Zero;
            fontFamily     = FontFamily.Default;
            fontSize       = 11;

            SetTextContentAdapter();
        }
Esempio n. 17
0
        public HtmlImageRenderElement(IRenderElementFactory factory, RenderQueue renderQueue, HtmlValueConverter converter)
        {
            this.factory     = factory;
            this.renderQueue = renderQueue;
            this.converter   = converter;

            bounds = Rect.Zero;

            HtmlElement.SetHtmlBounds(Bounds, converter);
        }
Esempio n. 18
0
        public object GetRenderResource(IRenderElementFactory factory)
        {
            if (renderResource == null)
            {
                renderResource           = factory.CreateGeometryRenderResource();
                renderResource.Transform = Transform;
                renderResource.Data      = GetRenderResourceData();
            }

            return(renderResource);
        }
Esempio n. 19
0
        protected override object CreateRenderElementContentOverride(IRenderElementFactory factory)
        {
            if (drawingRenderElement == null)
            {
                renderElementFactory = factory;
                drawingRenderElement = factory.CreateDrawingRenderElement(this);

                RenderAsync();
            }

            return(drawingRenderElement);
        }
Esempio n. 20
0
        private IImageRenderElement CreateRenderElement(IRenderElementFactory factory)
        {
            IImageRenderElement imageRenderElement = factory.CreateImageRenderElement(this);

            if (Source != null)
            {
                imageRenderElement.Bounds = GetStretchRect(Source.Size, VisualBounds.Size, Stretch, StretchDirection);
                imageRenderElement.Source = this.Source;
            }

            return(imageRenderElement);
        }
Esempio n. 21
0
        public void RemoveRenderElement(IRenderElementFactory factory)
        {
            if (this.factory != factory)
            {
                return;
            }

            this.factory   = null;
            this.element   = null;
            this.Factories = new IRenderElementFactory[0];
            this.Elements  = new T[0];
            this.Count     = 0;
        }
Esempio n. 22
0
        private IBorderRenderElement CreateRenderElement(IRenderElementFactory factory)
        {
            IBorderRenderElement borderRenderElement = factory.CreateBorderRenderElement(this);

            borderRenderElement.Background       = Background;
            borderRenderElement.BorderBrush      = BorderBrush;
            borderRenderElement.BorderThickness  = BorderThickness;
            borderRenderElement.Bounds           = new Rect(VisualSize);
            borderRenderElement.CornerRadius     = CornerRadius;
            borderRenderElement.IsHitTestVisible = IsHitTestVisible;

            return(borderRenderElement);
        }
Esempio n. 23
0
        protected override object CreateRenderElementContentOverride(IRenderElementFactory factory)
        {
            if (imageRenderElement == null)
            {
                imageRenderElement = factory.CreateImageRenderElement(this);

                if (Source != null)
                {
                    imageRenderElement.Bounds = GetStretchRect(Source.Size, VisualBounds.Size, Stretch, StretchDirection);
                    imageRenderElement.Source = this.Source;
                }
            }

            return(imageRenderElement);
        }
Esempio n. 24
0
        public object GetRenderResource(IRenderElementFactory factory)
        {
            if (renderResource == null)
            {
                object resource = CreateRenderResource(factory);
                OnRenderResourceCreated(resource);

                if (renderResource == null)
                {
                    throw new Granular.Exception("base.OnRenderResourceCreated was not called for \"{0}\"", GetType().Name);
                }
            }

            return(renderResource);
        }
        public HtmlTextBoxRenderElement(IRenderElementFactory factory, RenderQueue renderQueue, HtmlValueConverter converter)
        {
            this.factory     = factory;
            this.renderQueue = renderQueue;
            this.converter   = converter;

            this.bounds     = System.Windows.Rect.Empty;
            this.fontFamily = FontFamily.Default;

            Bridge.Html5.HTMLElement styleElement = Bridge.Html5.Document.CreateElement("style");
            styleElement.TextContent = "::-ms-clear { width: 0px; height: 0px; }";

            HtmlElement.AppendChild(styleElement);

            SetContentElement();
        }
Esempio n. 26
0
        protected override object CreateRenderElementContentOverride(IRenderElementFactory factory)
        {
            if (borderRenderElement == null)
            {
                borderRenderElement = factory.CreateBorderRenderElement(this);

                borderRenderElement.Background       = Background;
                borderRenderElement.BorderBrush      = BorderBrush;
                borderRenderElement.BorderThickness  = BorderThickness;
                borderRenderElement.Bounds           = new Rect(VisualSize);
                borderRenderElement.CornerRadius     = CornerRadius;
                borderRenderElement.IsHitTestVisible = IsHitTestVisible;
            }

            return(borderRenderElement);
        }
        public HtmlGeometryRenderResource(IRenderElementFactory factory, RenderQueue renderQueue, SvgDefinitionContainer svgDefinitionContainer, SvgValueConverter converter) :
            base(SvgDocument.CreateElement("clipPath"))
        {
            this.factory                = factory;
            this.renderQueue            = renderQueue;
            this.svgDefinitionContainer = svgDefinitionContainer;
            this.converter              = converter;

            this.pathHtmlElement = SvgDocument.CreateElement("path");

            string elementName = $"clipPath{svgDefinitionContainer.GetNextId()}";

            this.Uri = $"url(#{elementName})";
            HtmlElement.SetAttribute("id", elementName);
            HtmlElement.AppendChild(pathHtmlElement);
        }
Esempio n. 28
0
        public IVisualRenderElement GetRenderElement(IRenderElementFactory factory)
        {
            IVisualRenderElement visualRenderElement;

            if (visualRenderElements.TryGetValue(factory, out visualRenderElement))
            {
                return(visualRenderElement);
            }

            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;

            int index = 0;

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

            object contentRenderElement = CreateContentRenderElementOverride(factory);

            if (contentRenderElement != null)
            {
                visualRenderElement.InsertChild(0, contentRenderElement);
            }

            if (visualRenderElements.Count == 0)
            {
                containsContentRenderElement = contentRenderElement != null;
            }
            else if (containsContentRenderElement != (contentRenderElement != null))
            {
                throw new Granular.Exception("ContentRenderElement for type \"{0}\" must be created for all of the factories or none of them", GetType().Name);
            }

            visualRenderElements.Add(factory, visualRenderElement);
            return(visualRenderElement);
        }
Esempio n. 29
0
        public wpf::System.Windows.Media.Pen Convert(Pen pen, IRenderElementFactory factory)
        {
            if (pen == null)
            {
                return(null);
            }

            return(new wpf::System.Windows.Media.Pen(Convert(pen.Brush, factory), pen.Thickness)
            {
                //PenLineCap DashCap
                //DashStyle DashStyle
                //PenLineCap StartLineCap
                //PenLineCap EndLineCap
                //PenLineJoin LineJoin
                MiterLimit = pen.MiterLimit,
            });
        }
Esempio n. 30
0
        protected override object CreateContentRenderElementOverride(IRenderElementFactory factory)
        {
            ITextBoxRenderElement textBoxRenderElement;

            if (textBoxRenderElements.TryGetValue(factory, out textBoxRenderElement))
            {
                return(textBoxRenderElement);
            }

            textBoxRenderElement = factory.CreateTextBoxRenderElement(this);

            textBoxRenderElement.CaretIndex       = this.CaretIndex;
            textBoxRenderElement.SelectionLength  = this.SelectionLength;
            textBoxRenderElement.SelectionStart   = this.SelectionStart;
            textBoxRenderElement.Text             = this.Text;
            textBoxRenderElement.MaxLength        = this.MaxLength;
            textBoxRenderElement.Bounds           = new Rect(this.VisualSize);
            textBoxRenderElement.AcceptsReturn    = this.AcceptsReturn;
            textBoxRenderElement.AcceptsTab       = this.AcceptsTab;
            textBoxRenderElement.IsPassword       = isPassword;
            textBoxRenderElement.IsReadOnly       = this.IsReadOnly || !this.IsEnabled;
            textBoxRenderElement.IsHitTestVisible = this.IsHitTestVisible && this.IsEnabled;
            textBoxRenderElement.SpellCheck       = this.spellCheck;
            textBoxRenderElement.HorizontalScrollBarVisibility = this.HorizontalScrollBarVisibility;
            textBoxRenderElement.VerticalScrollBarVisibility   = this.VerticalScrollBarVisibility;

            textBoxRenderElement.Foreground    = (Brush)GetValue(Control.ForegroundProperty);
            textBoxRenderElement.FontSize      = (double)GetValue(Control.FontSizeProperty);
            textBoxRenderElement.FontFamily    = (FontFamily)GetValue(Control.FontFamilyProperty);
            textBoxRenderElement.FontStretch   = (FontStretch)GetValue(Control.FontStretchProperty);
            textBoxRenderElement.FontStyle     = (FontStyle)GetValue(Control.FontStyleProperty);
            textBoxRenderElement.FontWeight    = (FontWeight)GetValue(Control.FontWeightProperty);
            textBoxRenderElement.TextAlignment = (TextAlignment)GetValue(TextBox.TextAlignmentProperty);
            textBoxRenderElement.TextWrapping  = (TextWrapping)GetValue(TextBox.TextWrappingProperty);

            textBoxRenderElement.TextChanged            += (sender, e) => this.Text = textBoxRenderElement.Text;
            textBoxRenderElement.CaretIndexChanged      += (sender, e) => this.CaretIndex = ((ITextBoxRenderElement)sender).CaretIndex;
            textBoxRenderElement.SelectionStartChanged  += (sender, e) => this.SelectionStart = ((ITextBoxRenderElement)sender).SelectionStart;
            textBoxRenderElement.SelectionLengthChanged += (sender, e) => this.SelectionLength = ((ITextBoxRenderElement)sender).SelectionLength;

            textBoxRenderElements.Add(factory, textBoxRenderElement);

            InvalidateMeasure();

            return(textBoxRenderElement);
        }
Esempio n. 31
0
        protected override object CreateContentRenderElementOverride(IRenderElementFactory factory)
        {
            ITextBlockRenderElement textBlockRenderElement;
            if (textBlockRenderElements.TryGetValue(factory, out textBlockRenderElement))
            {
                return textBlockRenderElement;
            }

            textBlockRenderElement = factory.CreateTextBlockRenderElement(this);

            textBlockRenderElement.Bounds = new Rect(VisualBounds.Size);
            textBlockRenderElement.FontFamily = this.FontFamily;
            textBlockRenderElement.Foreground = this.Foreground;
            textBlockRenderElement.FontSize = this.FontSize;
            textBlockRenderElement.FontStyle = this.FontStyle;
            textBlockRenderElement.FontStretch = this.FontStretch;
            textBlockRenderElement.FontWeight = this.FontWeight;
            textBlockRenderElement.Text = this.Text;
            textBlockRenderElement.TextAlignment = this.TextAlignment;
            textBlockRenderElement.TextTrimming = this.TextTrimming;
            textBlockRenderElement.TextWrapping = this.TextWrapping;

            textBlockRenderElements.Add(factory, textBlockRenderElement);

            return textBlockRenderElement;
        }
Esempio n. 32
0
        protected override object CreateContentRenderElementOverride(IRenderElementFactory factory)
        {
            ITextBoxRenderElement textBoxRenderElement;
            if (textBoxRenderElements.TryGetValue(factory, out textBoxRenderElement))
            {
                return textBoxRenderElement;
            }

            textBoxRenderElement = factory.CreateTextBoxRenderElement(this);

            textBoxRenderElement.CaretIndex = this.CaretIndex;
            textBoxRenderElement.SelectionLength = this.SelectionLength;
            textBoxRenderElement.SelectionStart = this.SelectionStart;
            textBoxRenderElement.Text = this.Text;
            textBoxRenderElement.MaxLength = this.MaxLength;
            textBoxRenderElement.Bounds = new Rect(this.VisualSize);
            textBoxRenderElement.AcceptsReturn = this.AcceptsReturn;
            textBoxRenderElement.AcceptsTab = this.AcceptsTab;
            textBoxRenderElement.IsPassword = isPassword;
            textBoxRenderElement.IsReadOnly = this.IsReadOnly || !this.IsEnabled;
            textBoxRenderElement.IsHitTestVisible = this.IsHitTestVisible && this.IsEnabled;
            textBoxRenderElement.SpellCheck = this.spellCheck;
            textBoxRenderElement.HorizontalScrollBarVisibility = this.HorizontalScrollBarVisibility;
            textBoxRenderElement.VerticalScrollBarVisibility = this.VerticalScrollBarVisibility;

            textBoxRenderElement.Foreground = (Brush)GetValue(Control.ForegroundProperty);
            textBoxRenderElement.FontSize = (double)GetValue(Control.FontSizeProperty);
            textBoxRenderElement.FontFamily = (FontFamily)GetValue(Control.FontFamilyProperty);
            textBoxRenderElement.FontStretch = (FontStretch)GetValue(Control.FontStretchProperty);
            textBoxRenderElement.FontStyle = (FontStyle)GetValue(Control.FontStyleProperty);
            textBoxRenderElement.FontWeight = (FontWeight)GetValue(Control.FontWeightProperty);
            textBoxRenderElement.TextAlignment = (TextAlignment)GetValue(TextBox.TextAlignmentProperty);
            textBoxRenderElement.TextWrapping = (TextWrapping)GetValue(TextBox.TextWrappingProperty);

            textBoxRenderElement.TextChanged += (sender, e) => this.Text = textBoxRenderElement.Text;
            textBoxRenderElement.CaretIndexChanged += (sender, e) => this.CaretIndex = ((ITextBoxRenderElement)sender).CaretIndex;
            textBoxRenderElement.SelectionStartChanged += (sender, e) => this.SelectionStart = ((ITextBoxRenderElement)sender).SelectionStart;
            textBoxRenderElement.SelectionLengthChanged += (sender, e) => this.SelectionLength = ((ITextBoxRenderElement)sender).SelectionLength;

            textBoxRenderElements.Add(factory, textBoxRenderElement);

            InvalidateMeasure();

            return textBoxRenderElement;
        }
Esempio n. 33
0
        protected override object CreateContentRenderElementOverride(IRenderElementFactory factory)
        {
            IBorderRenderElement borderRenderElement;
            if (borderRenderElements.TryGetValue(factory, out borderRenderElement))
            {
                return borderRenderElement;
            }

            borderRenderElement = factory.CreateBorderRenderElement(this);

            borderRenderElement.Background = Background;
            borderRenderElement.BorderBrush = BorderBrush;
            borderRenderElement.BorderThickness = BorderThickness;
            borderRenderElement.Bounds = new Rect(VisualSize);
            borderRenderElement.CornerRadius = CornerRadius;
            borderRenderElement.IsHitTestVisible = IsHitTestVisible;

            borderRenderElements.Add(factory, borderRenderElement);

            return borderRenderElement;
        }
Esempio n. 34
0
 protected virtual object CreateContentRenderElementOverride(IRenderElementFactory factory)
 {
     return null;
 }
Esempio n. 35
0
        public void RemoveRenderElement(IRenderElementFactory factory)
        {
            visualRenderElements.Remove(factory);

            foreach (Visual child in VisualChildren)
            {
                child.RemoveRenderElement(factory);
            }
        }
Esempio n. 36
0
        public IVisualRenderElement GetRenderElement(IRenderElementFactory factory)
        {
            IVisualRenderElement visualRenderElement;
            if (visualRenderElements.TryGetValue(factory, out visualRenderElement))
            {
                return visualRenderElement;
            }

            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;

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

            object contentRenderElement = CreateContentRenderElementOverride(factory);
            if (contentRenderElement != null)
            {
                visualRenderElement.InsertChild(0, contentRenderElement);
            }

            if (visualRenderElements.Count == 0)
            {
                containsContentRenderElement = contentRenderElement != null;
            }
            else if (containsContentRenderElement != (contentRenderElement != null))
            {
                throw new Granular.Exception("ContentRenderElement for type \"{0}\" must be created for all of the factories or none of them", GetType().Name);
            }

            visualRenderElements.Add(factory, visualRenderElement);
            return visualRenderElement;
        }
Esempio n. 37
0
        protected override object CreateContentRenderElementOverride(IRenderElementFactory factory)
        {
            IImageRenderElement imageRenderElement;
            if (imageRenderElements.TryGetValue(factory, out imageRenderElement))
            {
                return imageRenderElement;
            }

            imageRenderElement = factory.CreateImageRenderElement(this);

            if (Source != null)
            {
                imageRenderElement.Bounds = GetStretchRect(Source.Size, VisualBounds.Size, Stretch, StretchDirection);
                imageRenderElement.Source = this.Source;
            }

            imageRenderElements.Add(factory, imageRenderElement);

            return imageRenderElement;
        }