Пример #1
0
        private void ToGeometryDrawing(IBaseShape shape, StringBuilder sb, IPathConverter converter)
        {
            if (shape is IGroupShape group)
            {
                foreach (var child in group.Shapes)
                {
                    ToGeometryDrawing(child, sb, converter);
                }
                return;
            }

            if (shape.IsFilled)
            {
                var path = converter.ToFillPathShape(shape);
                if (path != null)
                {
                    var geometry = path.Geometry.ToXamlString();
                    var brush    = (shape.Style.Fill as IArgbColor).ToXamlString();
                    sb.AppendLine($"    <GeometryDrawing Brush=\"{brush}\" Geometry=\"{geometry}\"/>");
                }
            }

            if (shape.IsStroked)
            {
                var path = converter.ToStrokePathShape(shape);
                if (path != null)
                {
                    var geometry = path.Geometry.ToXamlString();
                    var brush    = (shape.Style.Stroke as IArgbColor).ToXamlString();
                    sb.AppendLine($"    <GeometryDrawing Brush=\"{brush}\" Geometry=\"{geometry}\"/>");
                }
            }
        }
Пример #2
0
        private void ToGeometryDrawing(IBaseShape shape, StringBuilder sb, IPathConverter converter)
        {
            if (shape is IGroupShape group)
            {
                foreach (var child in group.Shapes)
                {
                    ToGeometryDrawing(child, sb, converter);
                }
                return;
            }

            if (shape.IsFilled)
            {
                var path = converter.ToFillPathShape(shape);
                if (path != null)
                {
                    var geometry = path.Geometry.ToSvgString();
                    var brush    = (shape.Style.Fill as IArgbColor).ToSvgString();
                    var fillRule = path.Geometry.FillRule == FillRule.Nonzero ? "nonzero" : "evenodd";
                    sb.AppendLine($"    <path fill=\"{brush}\" fill-rule=\"{fillRule}\" d=\"{geometry}\"/>");
                }
            }
            if (shape.IsStroked)
            {
                var path = converter.ToStrokePathShape(shape);
                if (path != null)
                {
                    var geometry = path.Geometry.ToSvgString();
                    var brush    = (shape.Style.Stroke as IArgbColor).ToSvgString();
                    var fillRule = path.Geometry.FillRule == FillRule.Nonzero ? "nonzero" : "evenodd";
                    sb.AppendLine($"    <path fill=\"{brush}\" fill-rule=\"{fillRule}\" d=\"{geometry}\"/>");
                }
            }
        }
Пример #3
0
        private void ToGeometryDrawing(BaseShapeViewModel shape, StringBuilder sb, IPathConverter converter)
        {
            if (shape is GroupShapeViewModel group)
            {
                foreach (var child in group.Shapes)
                {
                    ToGeometryDrawing(child, sb, converter);
                }
                return;
            }

            if (shape.IsFilled)
            {
                var path = converter.ToFillPathShape(shape);
                if (path is { })