示例#1
0
        private void OnPropertyChanged(ManagedWeakReference instance, DependencyProperty property, DependencyPropertyChangedEventArgs args)
        {
            if (property == FillRuleProperty)
            {
                var rule = FillRule switch
                {
                    FillRule.EvenOdd => "evenodd",
                    FillRule.Nonzero => "nonzero",
                    _ => "evenodd"
                };
                _svgElement.SetAttribute("fill-rule", rule);
            }
            else if (property == ChildrenProperty)
            {
                _svgElement.ClearChildren();

                if (args.OldValue is GeometryCollection oldGeometries)
                {
                    oldGeometries.VectorChanged -= OnGeometriesChanged;
                }

                if (args.NewValue is GeometryCollection newGeometries)
                {
                    newGeometries.VectorChanged += OnGeometriesChanged;

                    newGeometries.SetParent(this);

                    foreach (var child in Children)
                    {
                        _svgElement.AddChild(child.GetSvgElement());
                    }
                }
            }
        }
示例#2
0
        internal override void OnPropertyChanged2(DependencyPropertyChangedEventArgs args)
        {
            base.OnPropertyChanged2(args);

            var property = args.Property;

            if (property == DataProperty)
            {
                _root.ClearChildren();
                _root.AddChild(Data.GetSvgElement());
            }
        }
示例#3
0
        private void DrawImagePixel(SvgElement container, Color c, float x, float y, float w, float h)
        {
            if (c.A == 0)
                return;

            SvgRectElement rc = new SvgRectElement(x, y, w, h);
            rc.Id="";
            rc.Style.Set("fill", "rgb("+c.R+","+c.G+","+c.B+")");
            if (c.A < 255)
                rc.Style.Set("opacity", c.A/255f);

            container.AddChild(rc);
        }