示例#1
0
            public PointF[] GetPoints()
            {
                List <MetafileParser.NormalizedPoint> list = new List <MetafileParser.NormalizedPoint>();

                list.Add(this._points[0]);
                for (int i = 1; i < this._points.Count; i++)
                {
                    if (!this.IsVisuallyIdentical(list[list.Count - 1], this._points[i]))
                    {
                        list.Add(this._points[i]);
                    }
                }
                PointF[] result;
                if (list.Count <= 1)
                {
                    result = null;
                }
                else
                {
                    List <PointF> list2 = new List <PointF>();
                    for (int i = 0; i < list.Count; i++)
                    {
                        MetafileParser.VisualPoint visualPoint = this._visualPoints[list[i].VisualIndex];
                        if (!visualPoint.IsLocked)
                        {
                            double num  = 0.0;
                            double num2 = 0.0;
                            int    num3 = 0;
                            int    j    = visualPoint.Weight;
                            while (j > 0)
                            {
                                if (this._normalizedPoints[num3].VisualIndex == visualPoint.VisualIndex)
                                {
                                    num  += (double)this._normalizedPoints[num3].Point.X;
                                    num2 += (double)this._normalizedPoints[num3].Point.Y;
                                    j--;
                                }
                                num3++;
                            }
                            visualPoint.Point    = new PointF((float)(num / (double)visualPoint.Weight), (float)(num2 / (double)visualPoint.Weight));
                            visualPoint.IsLocked = true;
                        }
                        list2.Add(visualPoint.Point);
                    }
                    result = list2.ToArray();
                }
                return(result);
            }
示例#2
0
 private MetafileParser.NormalizedPoint Add(PointF point)
 {
     MetafileParser.VisualPoint     visualPoint;
     MetafileParser.NormalizedPoint normalizedPoint;
     MetafileParser.NormalizedPoint result;
     for (int i = this._normalizedPoints.Count - 1; i >= 0; i--)
     {
         if (this.IsVisuallyIdentical(this._normalizedPoints[i].Point, point))
         {
             visualPoint = this._visualPoints[this._normalizedPoints[i].VisualIndex];
             visualPoint.Weight++;
             normalizedPoint = new MetafileParser.NormalizedPoint
             {
                 Point       = point,
                 VisualIndex = visualPoint.VisualIndex
             };
             this._normalizedPoints.Add(normalizedPoint);
             result = normalizedPoint;
             return(result);
         }
     }
     visualPoint = new MetafileParser.VisualPoint
     {
         IsLocked    = false,
         VisualIndex = this._visualPoints.Count,
         Weight      = 1
     };
     this._visualPoints.Add(visualPoint);
     normalizedPoint = new MetafileParser.NormalizedPoint
     {
         Point       = point,
         VisualIndex = visualPoint.VisualIndex
     };
     this._normalizedPoints.Add(normalizedPoint);
     result = normalizedPoint;
     return(result);
 }