Ejemplo n.º 1
0
    public PolyLine(Line line)
    {
      LineSegment lineSegment = new LineSegment(new PointF(line.x1 * 3.0F + 10.0F, line.y1 * 3.0F + 10.0F), new PointF(line.x2 * 3.0F + 10.0F, line.y2 * 3.0F + 10.0F));
      lineSegment.IsDecorationSegment = true;

      shapeSegments = new ArrayList();
      shapeSegments.Add(lineSegment);
    }
Ejemplo n.º 2
0
        internal bool Add(Line line)
        {
          LineSegment lineSegment = new LineSegment(new PointF(line.x1 * 3.0F + 10.0F, line.y1 * 3.0F + 10.0F), new PointF(line.x2 * 3.0F + 10.0F, line.y2 * 3.0F + 10.0F));
          lineSegment.IsDecorationSegment = true;

          if ((shapeSegments != null) && (shapeSegments.Count > 0) && (shapeSegments[shapeSegments.Count - 1] is LineSegment))
          {
            LineSegment oldLineSegment = shapeSegments[shapeSegments.Count - 1] as LineSegment;
            if (oldLineSegment.GetEndPoint() == lineSegment.GetStartPoint())
            {
              shapeSegments.Add(lineSegment);
              return true;
            }
          }
          return false;
        }
Ejemplo n.º 3
0
    private void splitToLine()
    {
      LineSegment lineSegment = new LineSegment(saveStartPoint, new PointF(saveNewPosX, saveNewPosY));
      LineSegment lineSegmentNext = new LineSegment(new PointF(saveNewPosX, saveNewPosY), saveEndPoint);

      if (saveSegment is LineSegment && (saveSegment as LineSegment).IsDecorationSegment)
      {
        lineSegment.IsDecorationSegment = true;
        lineSegmentNext.IsDecorationSegment = true;
      }


      shapeSegments.Remove(saveSegment);
      shapeSegments.Insert(saveIndex, lineSegment);
      shapeSegments.Insert(saveIndex + 1, lineSegmentNext);
      if (Changed != null)
        Changed(this, new EventArgs());
    }
Ejemplo n.º 4
0
    public Contour(Color color, ArrayList arr, PointF[] pStart, PointF[] point1, PointF[] point2, PointF[] pEnd)
    {
      Segment s = null;
      shapeSegments = new ArrayList();
      if (arr != null)
      {
        for (int i = 0; i < arr.Count; ++i)
        {
          if (arr[i] is LineSegment)
            s = new LineSegment(pStart[i], pEnd[i]);

          if (arr[i] is BezierSegment)
          {
            s = new BezierSegment();
            (s as BezierSegment).points[0] = pStart[i];
            (s as BezierSegment).points[1] = point1[i];
            (s as BezierSegment).points[2] = point2[i];
            (s as BezierSegment).points[3] = pEnd[i];
          }
          shapeSegments.Add(s);
        }
      }
      fillColor = color;
    }
Ejemplo n.º 5
0
    // Constructors
    public Contour(Color color, int grdSize)
    {
      if (grdSize > 25)
        Coef = 7;
      else
        Coef = 14;
      shapeSegments = new ArrayList();
      //            Segment s1 = new LineSegment(new PointF(10, 10),   new PointF(210, 10));
      //            Segment s2 = new LineSegment(new PointF(210, 10),  new PointF(210, 210));
      //            Segment s3 = new LineSegment(new PointF(210, 210), new PointF(10, 210));
      //            Segment s4 = new LineSegment(new PointF(10, 210),  new PointF(10, 10));

      Segment s1 = new LineSegment(new PointF(grdSize, grdSize), new PointF(Coef * grdSize, grdSize));
      Segment s2 = new LineSegment(new PointF(Coef * grdSize, grdSize), new PointF(Coef * grdSize, Coef * grdSize));
      Segment s3 = new LineSegment(new PointF(Coef * grdSize, Coef * grdSize), new PointF(grdSize, Coef * grdSize));
      Segment s4 = new LineSegment(new PointF(grdSize, Coef * grdSize), new PointF(grdSize, grdSize));

      shapeSegments.Add(s1);
      shapeSegments.Add(s2);
      shapeSegments.Add(s3);
      shapeSegments.Add(s4);

      fillColor = color;
    }
Ejemplo n.º 6
0
    internal void splitToBezier()
    {
      PointF pt0, pt3;

      pt0 = new PointF(saveNewPosX, saveNewPosY);
      pt3 = saveEndPoint;

      BezierSegment newBezierSegment = new BezierSegment();
      LineSegment newLineSegment = new LineSegment(saveStartPoint, new PointF(saveNewPosX, saveNewPosY));

      if (saveSegment is LineSegment && (saveSegment as LineSegment).IsDecorationSegment)
      {
        newBezierSegment.IsDecorationSegment = true;
        newLineSegment.IsDecorationSegment = true;
      }

      shapeSegments.Remove(saveSegment);
      shapeSegments.Insert(saveIndex, newLineSegment);


      newBezierSegment.points[0] = pt0;
      newBezierSegment.points[1] = new PointF(((pt0.X) * 2 + pt3.X) / 3, ((pt0.Y) * 2 + pt3.Y) / 3);
      newBezierSegment.points[2] = new PointF(((pt0.X) / 2 + pt3.X) * 2 / 3, ((pt0.Y) / 2 + pt3.Y) * 2 / 3);
      newBezierSegment.points[3] = pt3;

      shapeSegments.Insert(saveIndex + 1, newBezierSegment);
      if (Changed != null)
        Changed(this, new EventArgs());
    }
Ejemplo n.º 7
0
 internal void combineSegments(float SaveCurrX, float SaveCurrY)
 {
   PointF pStart;
   PointF pEnd;
   if (shapeSegments.Count > MinNumLines)
   {
     for (int i = 0; i < shapeSegments.Count; ++i)
     {
       Segment s1 = (Segment)shapeSegments[i];
       Segment s2 = (Segment)shapeSegments[(i + 1) % shapeSegments.Count];
       if (s1.hitTest(new PointF(SaveCurrX, SaveCurrY)) && s2.hitTest(new PointF(SaveCurrX, SaveCurrY)))
       {
         saveIndex = i;
         pStart = s1.GetStartPoint();
         pEnd = s2.GetEndPoint();
         shapeSegments.Remove(s1);
         shapeSegments.Remove(s2);
         Segment sCombinedLine = new LineSegment(pStart, pEnd);
         shapeSegments.Insert(i, sCombinedLine);
         break;
       }
     }
   }
 }
Ejemplo n.º 8
0
    private void CovertTo()
    {
      if (saveSegment is LineSegment)
      {
        BezierSegment newBezierSeg = new BezierSegment();

        if ((saveSegment as LineSegment).IsDecorationSegment)
          newBezierSeg.IsDecorationSegment = true;

        shapeSegments.Remove(saveSegment);

        newBezierSeg.points[0] = saveStartPoint;
        newBezierSeg.points[1] = new PointF(((saveStartPoint.X) * 2 + saveEndPoint.X) / 3, ((saveStartPoint.Y) * 2 + saveEndPoint.Y) / 3);
        newBezierSeg.points[2] = new PointF(((saveStartPoint.X) / 2 + saveEndPoint.X) * 2 / 3, ((saveStartPoint.Y) / 2 + saveEndPoint.Y) * 2 / 3);
        newBezierSeg.points[3] = saveEndPoint;
        shapeSegments.Insert(saveIndex, newBezierSeg);
      }
      if (saveSegment is BezierSegment)
      {
        LineSegment newLineSegment = new LineSegment(saveStartPoint, saveEndPoint);

        if ((saveSegment as BezierSegment).IsDecorationSegment)
          newLineSegment.IsDecorationSegment = true;

        shapeSegments.Remove(saveSegment);
        shapeSegments.Insert(saveIndex, newLineSegment);
      }
      if (Changed != null)
        Changed(this, new EventArgs());
    }
Ejemplo n.º 9
0
 private void menuItemInsertDecorLineOnClick(object Sender, System.EventArgs e)
 {
   LineSegment newDecorationLine = new LineSegment(new PointF(saveNewPosX, saveNewPosY), new PointF(saveNewPosX + decorationWidth, saveNewPosY));
     newDecorationLine.IsDecorationSegment = true;
   PolyLine newPolyLine = new PolyLine(newDecorationLine);
   outLines.Add(newPolyLine);
   newPolyLine.Changed += new OutlineChangeEventHandler(onContourChanged);
   changeContour(Sender);
 }