public VectorInkBuilder()
        {
            BrushPolygon bp4  = new BrushPolygon(0.0f, VectorBrushFactory.CreateEllipseBrush(4, 1.0f, 1.0f));
            BrushPolygon bp8  = new BrushPolygon(2.0f, VectorBrushFactory.CreateEllipseBrush(8, 1.0f, 1.0f));
            BrushPolygon bp16 = new BrushPolygon(6.0f, VectorBrushFactory.CreateEllipseBrush(16, 1.0f, 1.0f));
            BrushPolygon bp32 = new BrushPolygon(18.0f, VectorBrushFactory.CreateEllipseBrush(32, 1.0f, 1.0f));

            mBrush = new VectorBrush(bp4, bp8, bp16, bp32);
        }
Exemplo n.º 2
0
        public static List <Vector2> ResolveShape(string shapeUri)
        {
            var uriSplit  = shapeUri.Split('?');
            var type      = uriSplit[0];
            var arguments = uriSplit[1].Split('&');

            if (type == CommonShapeURIs.Ellipse.Uri)
            {
                //E.g. will://brush/3.0/shape/Ellipse?precision=20&radiusX=1.0&radiusY=1.0

                int   precision = 20;
                float radiusX   = 1.0f;
                float radiusY   = 0.5f;

                foreach (var arg in arguments)
                {
                    string[] split = arg.Split('=');

                    if (split[0] == "precision")
                    {
                        bool res = int.TryParse(split[1], out int value);
                        if (res)
                        {
                            precision = value;
                        }
                    }
                    else if (split[0] == "radiusX")
                    {
                        bool res = float.TryParse(split[1], out float value);
                        if (res)
                        {
                            radiusX = value;
                        }
                    }
                    else if (split[0] == "radiusY")
                    {
                        bool res = float.TryParse(split[1], out float value);
                        if (res)
                        {
                            radiusY = value;
                        }
                    }
                    else
                    {
                        throw new NotSupportedException($"Argument '{split[0]}' not supported!");
                    }
                }

                return(VectorBrushFactory.CreateEllipseBrush(precision, radiusX, radiusY));
            }
            else if (type == CommonShapeURIs.Circle.Uri)
            {
                //E.g. will://brush/3.0/shape/Circle?precision=20&radius=1.0

                int   precision = 20;
                float radius    = 1.0f;

                foreach (var arg in arguments)
                {
                    string[] split = arg.Split('=');

                    if (split[0] == "precision")
                    {
                        bool res = int.TryParse(split[1], out int value);
                        if (res)
                        {
                            precision = value;
                        }
                    }
                    else if (split[0] == "radius")
                    {
                        bool res = float.TryParse(split[1], out float value);
                        if (res)
                        {
                            radius = value;
                        }
                    }
                    else
                    {
                        throw new NotSupportedException($"Argument '{split[0]}' not supported!");
                    }
                }

                return(VectorBrushFactory.CreateEllipseBrush(precision, radius, radius));
            }
            else
            {
                throw new NotSupportedException($"Unknown shape URI: {type}");
            }
        }