Exemple #1
0
        public new  DrawEllipseObject GetWorldDrawObject()
        {
            if (Parent != null)
            {
                PointF worldTemp = new PointF();
                var    tempR     = new PointF(rectangle.Width, rectangle.Height);
                worldTemp.X = rectangle.X;//当前坐标
                worldTemp.Y = rectangle.Y;
                var worldPosition = new PointF(0f, 0f);
                var worldR        = PointF.Empty;
                var p             = Parent;
                while (p != null)
                {
                    var zw = 0f;
                    var zh = 0f;
                    if (p.Width == 0 || p.Height == 0)
                    {
                        zw = 1f;
                        zh = 1f;
                        //worldTemp.X += p.Rectangle.X;
                        //worldTemp.Y += p.Rectangle.Y;
                    }
                    else
                    {
                        zw = p.Width / p.ViewBox_w;
                        zh = p.Height / p.ViewBox_h;
                    }
                    worldPosition.X += worldTemp.X * zw;
                    worldPosition.Y += worldTemp.Y * zh;
                    worldR.X        += tempR.X * zw;
                    worldR.Y        += tempR.Y * zh;

                    worldTemp.X = p.Rectangle.X;
                    worldTemp.Y = p.Rectangle.Y;

                    tempR = worldR;

                    p = p.Parent;
                }

                worldPosition.X += worldTemp.X;
                worldPosition.Y += worldTemp.Y;

                var worldDrawObj = new DrawEllipseObject(worldPosition.X, worldPosition.Y, worldR.X, worldR.Y);
                //var worldDrawObj = new DrawEllipseObject(wokrldPosition.X, worldPosition.Y, 5, 5);

                return(worldDrawObj);
            }

            return(this);
        }
Exemple #2
0
 public static DrawEllipseObject Create(SVGEllipse svg)
 {
     try
     {
         float cx   = ParseSize(svg.CX, Dpi.X);
         float cy   = ParseSize(svg.CY, Dpi.Y);
         float rx   = ParseSize(svg.RX, Dpi.X);
         float ry   = ParseSize(svg.RY, Dpi.Y);
         var   dobj = new DrawEllipseObject(cx - rx, cy - ry, rx * 2, ry * 2);
         dobj.SetStyleFromSvg(svg);
         return(dobj);
     }
     catch (Exception ex)
     {
         SVGErr.Log("DrawEllipse", "CreateRectangle", ex.ToString(), SVGErr._LogPriority.Info);
         return(null);
     }
 }