Пример #1
0
        private static RenderRepresentation ToRenderRepresentation(VisualElement element)
        {
            var rep = new RenderRepresentation()
            {
                ElementId            = element.Id,
                VisualTypeName       = element.GetType().Name,
                ParentVisualTypeName = element.Parent?.GetType().Name,
                ParentId             = element.Parent?.Id ?? Guid.Empty,
                WidthRequest         = element.WidthRequest,
                HeightRequest        = element.HeightRequest,
                Bounds = new RenderBounds()
                {
                    X      = element.Bounds.X,
                    Y      = element.Bounds.Y,
                    Height = element.Bounds.Height,
                    Width  = element.Bounds.Width
                }
            };



            if (element is View view)
            {
                rep.HorizontalOptions = LayoutOptionsToString(view.HorizontalOptions);

                rep.VerticalOptions = LayoutOptionsToString(view.VerticalOptions);

                rep.Margin = new RenderThickness
                {
                    Left   = view.Margin.Left,
                    Top    = view.Margin.Top,
                    Right  = view.Margin.Right,
                    Bottom = view.Margin.Bottom
                };
            }

            var paddingProp = element.GetType().GetProperty("Padding");

            if (!(paddingProp is null))
            {
                var padding = (Thickness)paddingProp.GetValue(element);
                rep.Padding = new RenderThickness
                {
                    Left   = padding.Left,
                    Top    = padding.Top,
                    Right  = padding.Right,
                    Bottom = padding.Bottom
                };
            }

            return(rep);
        }
Пример #2
0
        public static RenderRepresentation RenderVisualHeirarchy(VisualElement rootElement)
        {
            RenderRepresentation rep = ToRenderRepresentation(rootElement);

            INativeViewRenderer nativeViewRenderer = DependencyService.Get <INativeViewRenderer>();

            rep.ViewPng = nativeViewRenderer.Render(rootElement);

            foreach (VisualElement childElement in rootElement.LogicalChildren)
            {
                rep.Children = AddChildren(childElement, rep);
            }

            return(rep);
        }
Пример #3
0
        public static string RenderVisualHeirarchyToJson(VisualElement element)
        {
            RenderRepresentation rep = RenderVisualHeirarchy(element);

            return(JsonConvert.SerializeObject(rep, Newtonsoft.Json.Formatting.Indented));
        }
Пример #4
0
        private static string RenderElementInfoString(VisualElement element)
        {
            RenderRepresentation rep = ToRenderRepresentation(element);

            return(rep.ToString());
        }
Пример #5
0
        public static List <RenderRepresentation> AddChildren(VisualElement rootElement, RenderRepresentation rep)
        {
            var list = new List <RenderRepresentation>();

            foreach (VisualElement childElement in rootElement.LogicalChildren)
            {
                var childRep = ToRenderRepresentation(childElement);

                INativeViewRenderer nativeViewRenderer = DependencyService.Get <INativeViewRenderer>();

                childRep.ViewPng = nativeViewRenderer.Render(childElement);

                list.Add(childRep);

                childRep.Children = AddChildren(childElement, childRep);
            }

            return(list);
        }