示例#1
0
 public Arc(eArcType type)
 {
     m_arcType = type;
     m_curPoint = eCurrentPoint.p1;
     if (m_arcType == eArcType.typeCenterRadius)
         m_curPoint = eCurrentPoint.center;
 }
示例#2
0
 protected UnitPoint GetPoint(eCurrentPoint pointid)
 {
     try
     {
         if (pointid == eCurrentPoint.p1)
         {
             return(m_clone.P1);
         }
         if (pointid == eCurrentPoint.p1)
         {
             return(m_clone.P2);
         }
         if (pointid == eCurrentPoint.p1)
         {
             return(m_clone.P3);
         }
         if (pointid == eCurrentPoint.p1)
         {
             return(m_clone.P4);
         }
         return(m_owner.P1);
     }
     catch (Exception ex)
     { throw ex; }
 }
示例#3
0
 private eDrawObjectMouseDownEnum MouseDown3P123(ICanvas canvas, UnitPoint point, ISnapPoint snappoint)
 {
     try
     {
         OnMouseMove(canvas, point);
         if (m_curPoint == eCurrentPoint.p1)
         {
             m_curPoint = eCurrentPoint.p2;
             return(eDrawObjectMouseDownEnum.Continue);
         }
         if (m_curPoint == eCurrentPoint.p2)
         {
             m_curPoint = eCurrentPoint.p3;
             return(eDrawObjectMouseDownEnum.Continue);
         }
         if (m_curPoint == eCurrentPoint.p3)
         {
             m_curPoint = eCurrentPoint.done;
             Selected   = false;
             return(eDrawObjectMouseDownEnum.Done);
         }
         return(eDrawObjectMouseDownEnum.Done);
     }
     catch (Exception ex)
     { throw ex; }
 }
示例#4
0
 public void Copy(Circle3Point acopy)
 {
     base.Copy(acopy);
     m_p1       = acopy.m_p1;
     m_p2       = acopy.m_p2;
     m_p3       = acopy.m_p3;
     m_center   = acopy.m_center;
     m_radius   = acopy.m_radius;
     m_curPoint = acopy.m_curPoint;
 }
示例#5
0
 public BezierTool(BezierTool owner, eCurrentPoint id)
 {
     try
     {
         m_owner         = owner;
         m_clone         = m_owner.Clone() as BezierTool;
         m_pointId       = id;
         Type            = owner.Type;
         m_originalPoint = GetPoint(m_pointId);
         UseRoute        = false;
     }
     catch (Exception ex)
     { throw ex; }
 }
示例#6
0
 public eDrawObjectMouseDown OnMouseDown(ICanvas canvas, UnitPoint point, ISnapPoint snappoint)
 {
     OnMouseMove(canvas, point);
     if (CurrentPoint == eCurrentPoint.p1)
     {
         CurrentPoint = eCurrentPoint.p3;
         return(eDrawObjectMouseDown.Continue);
     }
     if (CurrentPoint == eCurrentPoint.p3)
     {
         CurrentPoint = eCurrentPoint.done;
         OnMouseMove(canvas, point);
         Selected = false;
         return(eDrawObjectMouseDown.Done);
     }
     return(eDrawObjectMouseDown.Done);
 }
示例#7
0
 /// <summary>
 /// 监听鼠标按下事件
 /// </summary>
 /// <param name="canvas"></param>
 /// <param name="point"></param>
 /// <param name="snappoint"></param>
 /// <returns></returns>
 public virtual eDrawObjectMouseDown OnMouseDown(ICanvas canvas, UnitPoint point, ISnapPoint snappoint)
 {
     OnMouseMove(canvas, point);
     if (m_curPoint == eCurrentPoint.p1)
     {
         m_curPoint = eCurrentPoint.p2;
         return(eDrawObjectMouseDown.Continue);
     }
     if (m_curPoint == eCurrentPoint.p2)
     {
         m_curPoint = eCurrentPoint.p3;
         return(eDrawObjectMouseDown.Continue);
     }
     if (m_curPoint == eCurrentPoint.p3)
     {
         m_curPoint = eCurrentPoint.done;
         Selected   = false;
         //return eDrawObjectMouseDown.Done;
     }
     return(eDrawObjectMouseDown.Done);
 }
示例#8
0
 protected void SetPoint(eCurrentPoint pointid, UnitPoint point, BezierTool Bezier)
 {
     try
     {
         if (pointid == eCurrentPoint.p1)
         {
             Bezier.P1 = point;
         }
         if (pointid == eCurrentPoint.p2)
         {
             Bezier.P2 = point;
         }
         if (pointid == eCurrentPoint.p3)
         {
             Bezier.P3 = point;
         }
         if (pointid == eCurrentPoint.p4)
         {
             Bezier.P4 = point;
         }
     }
     catch (Exception ex)
     { throw ex; }
 }
示例#9
0
        public virtual INodePoint NodePoint(ICanvas canvas, UnitPoint point)
        {
            //Console.WriteLine(m_p1.X+" "+m_p1.Y);
            float thWidth = Line.ThresholdWidth(canvas, Width, ThresholdPixel);

            if (HitUtil.PointInPoint(Center, point, thWidth))//圓心位移
            {
                return(new NodePointCircleCenter(this));
            }
            bool radiushit = HitUtil.PointInPoint(m_p1, point, thWidth);

            if (radiushit == false)
            {
                radiushit = HitUtil.PointInPoint(m_p2, point, thWidth);
            }
            if (radiushit == false)
            {
                radiushit = HitUtil.PointInPoint(m_p3, point, thWidth);
            }
            if (radiushit)
            {
                m_curPoint  = eCurrentPoint.radius;
                m_lastPoint = Center;
                return(new NodePointCircleRadius(this));
            }
            return(null);

            //float thWidth = Line.ThresholdWidth(canvas, Width, ThresholdPixel);
            //if (HitUtil.PointInPoint(P1, point, thWidth))
            //{
            //    m_lastPoint = P1;
            //    return new NodePointArc3PointPoint(this, eCurrentPoint.p1);
            //}
            //if (HitUtil.PointInPoint(P2, point, thWidth))
            //{
            //    m_lastPoint = P2;
            //    return new NodePointArc3PointPoint(this, eCurrentPoint.p2);
            //}
            //if (HitUtil.PointInPoint(P3, point, thWidth))
            //{
            //    m_lastPoint = P3;
            //    return new NodePointArc3PointPoint(this, eCurrentPoint.p3);
            //}
            //UnitPoint p = StartAngleNodePoint(canvas);
            //if (HitUtil.PointInPoint(p, point, thWidth))
            //{
            //    m_lastPoint = p;
            //    return new NodePointArc3PointPoint(this, eCurrentPoint.startangle);
            //}
            //p = EndAngleNodePoint(canvas);
            //if (HitUtil.PointInPoint(p, point, thWidth))
            //{
            //    m_lastPoint = p;
            //    return new NodePointArc3PointPoint(this, eCurrentPoint.endangle);
            //}
            //p = RadiusNodePoint(canvas);
            //if (HitUtil.PointInPoint(p, point, thWidth))
            //{
            //    m_lastPoint = p;
            //    return new NodePointArc3PointPoint(this, eCurrentPoint.radius);
            //}
            return(null);
        }
示例#10
0
 public Arc3Point(eArcType type)
 {
     m_type = type;
     m_curPoint = eCurrentPoint.p1;
 }
示例#11
0
 public Circle3Point()
 {
     m_curPoint = eCurrentPoint.p1;
 }
示例#12
0
 eDrawObjectMouseDown MouseDown3P132(ICanvas canvas, UnitPoint point, ISnapPoint snappoint)
 {
     OnMouseMove(canvas, point);
     if (m_curPoint == eCurrentPoint.p1)
     {
         m_curPoint = eCurrentPoint.p3;
         return eDrawObjectMouseDown.Continue;
     }
     if (m_curPoint == eCurrentPoint.p3)
     {
         m_curPoint = eCurrentPoint.p2;
         return eDrawObjectMouseDown.Continue;
     }
     if (m_curPoint == eCurrentPoint.p2)
     {
         m_curPoint = eCurrentPoint.done;
         Selected = false;
         return eDrawObjectMouseDown.Done;
     }
     return eDrawObjectMouseDown.Done;
 }
示例#13
0
 public virtual eDrawObjectMouseDown OnMouseDown(ICanvas canvas, UnitPoint point, ISnapPoint snappoint)
 {
     OnMouseMove(canvas, point);
     if (m_arcType == eArcType.type2point)
     {
         if (m_curPoint == eCurrentPoint.p1)
         {
             m_curPoint = eCurrentPoint.p2;
             return eDrawObjectMouseDown.Continue;
         }
         if (m_curPoint == eCurrentPoint.p2)
         {
             m_curPoint = eCurrentPoint.startAngle;
             return eDrawObjectMouseDown.Continue;
         }
         if (m_curPoint == eCurrentPoint.startAngle)
         {
             m_curPoint = eCurrentPoint.endAngle;
             return eDrawObjectMouseDown.Continue;
         }
         if (m_curPoint == eCurrentPoint.endAngle)
         {
             m_curPoint = eCurrentPoint.done;
             OnMouseMove(canvas, point);
             Selected = false;
             return eDrawObjectMouseDown.Done;
         }
     }
     if (m_arcType == eArcType.typeCenterRadius)
     {
         if (m_curPoint == eCurrentPoint.center)
         {
             m_curPoint = eCurrentPoint.radius;
             return eDrawObjectMouseDown.Continue;
         }
         if (m_curPoint == eCurrentPoint.radius)
         {
             m_curPoint = eCurrentPoint.startAngle;
             return eDrawObjectMouseDown.Continue;
         }
         if (m_curPoint == eCurrentPoint.startAngle)
         {
             m_curPoint = eCurrentPoint.endAngle;
             return eDrawObjectMouseDown.Continue;
         }
         if (m_curPoint == eCurrentPoint.endAngle)
         {
             m_curPoint = eCurrentPoint.done;
             OnMouseMove(canvas, point);
             Selected = false;
             return eDrawObjectMouseDown.Done;
         }
     }
     return eDrawObjectMouseDown.Done;
 }
示例#14
0
 public virtual void OnKeyDown(ICanvas canvas, KeyEventArgs e)
 {
     if (e.KeyCode == Keys.D && (m_curPoint == eCurrentPoint.startAngle || m_curPoint == eCurrentPoint.endAngle))
     {
         if (Direction == eDirection.kCW)
             Direction = eDirection.kCCW;
         else
             Direction = eDirection.kCW;
         e.Handled = true;
     }
     if (e.KeyCode == Keys.C) // switch to centerRadius mode
     {
         m_center = UnitPoint.Empty;
         m_radius = 0;
         m_startAngle = 0;
         m_endAngle = 0;
         m_arcType = eArcType.typeCenterRadius;
         m_curPoint = eCurrentPoint.center;
         e.Handled = true;
         canvas.Invalidate();
     }
     if (e.KeyCode == Keys.D2) // switch to 2 pointmode
     {
         m_center = UnitPoint.Empty;
         m_radius = 0;
         m_startAngle = 0;
         m_endAngle = 0;
         m_arcType = eArcType.type2point;
         m_curPoint = eCurrentPoint.p1;
         e.Handled = true;
         canvas.Invalidate();
     }
 }
示例#15
0
 public virtual INodePoint NodePoint(ICanvas canvas, UnitPoint point)
 {
     float thWidth = Line.ThresholdWidth(canvas, Width, ThresholdPixel);
     if (HitUtil.PointInPoint(m_center, point, thWidth))
         return new NodePointArcCenter(this);
     if (HitUtil.PointInPoint(StartAnglePoint, point, thWidth))
     {
         m_curPoint = eCurrentPoint.startAngle;
         m_lastPoint = m_center;
         return new NodePointArcAngle(this);
     }
     if (HitUtil.PointInPoint(EndAnglePoint, point, thWidth))
     {
         m_curPoint = eCurrentPoint.endAngle;
         m_lastPoint = m_center;
         return new NodePointArcAngle(this);
     }
     if (HitUtil.PointInPoint(RadiusPoint, point, thWidth))
     {
         m_curPoint = eCurrentPoint.radius;
         m_lastPoint = m_center;
         return new NodePointArcRadius(this);
     }
     return null;
 }
示例#16
0
 public void Copy(Arc3Point acopy)
 {
     base.Copy(acopy);
     m_p1 = acopy.m_p1;
     m_p2 = acopy.m_p2;
     m_p3 = acopy.m_p3;
     m_center = acopy.m_center;
     m_radius = acopy.m_radius;
     m_startAngle = acopy.m_startAngle;
     m_endAngle = acopy.m_endAngle;
     m_direction = acopy.m_direction;
     m_curPoint = acopy.m_curPoint;
 }
示例#17
0
 public Arc3Point(eArcType type)
 {
     m_type     = type;
     m_curPoint = eCurrentPoint.p1;
 }
示例#18
0
 public void Copy(Arc acopy)
 {
     base.Copy(acopy);
     Center = acopy.Center;
     Radius = acopy.Radius;
     StartAngle = acopy.StartAngle;
     EndAngle = acopy.EndAngle;
     Selected = acopy.Selected;
     Direction = acopy.Direction;
     m_arcType = acopy.m_arcType;
     m_curPoint = acopy.m_curPoint;
 }
示例#19
0
        public virtual INodePoint NodePoint(ICanvas canvas, UnitPoint point)
        {
            float thWidth = Line.ThresholdWidth(canvas, Width, ThresholdPixel);

            if (HitUtil.PointInPoint(Center, point, thWidth))
            {
                return(new NodePointArcCenter(this));
            }
            bool radiushit = HitUtil.PointInPoint(AnglePoint(0), point, thWidth);

            if (radiushit == false)
            {
                radiushit = HitUtil.PointInPoint(AnglePoint(90), point, thWidth);
            }
            if (radiushit == false)
            {
                radiushit = HitUtil.PointInPoint(AnglePoint(180), point, thWidth);
            }
            if (radiushit == false)
            {
                radiushit = HitUtil.PointInPoint(AnglePoint(270), point, thWidth);
            }
            if (radiushit)
            {
                m_curPoint  = eCurrentPoint.radius;
                m_lastPoint = Center;
                return(new NodePointArcRadius(this));
            }
            return(null);

            //float thWidth = Line.ThresholdWidth(canvas, Width, ThresholdPixel);
            //if (HitUtil.PointInPoint(P1, point, thWidth))
            //{
            //    m_lastPoint = P1;
            //    return new NodePointArc3PointPoint(this, eCurrentPoint.p1);
            //}
            //if (HitUtil.PointInPoint(P2, point, thWidth))
            //{
            //    m_lastPoint = P2;
            //    return new NodePointArc3PointPoint(this, eCurrentPoint.p2);
            //}
            //if (HitUtil.PointInPoint(P3, point, thWidth))
            //{
            //    m_lastPoint = P3;
            //    return new NodePointArc3PointPoint(this, eCurrentPoint.p3);
            //}
            //UnitPoint p = StartAngleNodePoint(canvas);
            //if (HitUtil.PointInPoint(p, point, thWidth))
            //{
            //    m_lastPoint = p;
            //    return new NodePointArc3PointPoint(this, eCurrentPoint.startangle);
            //}
            //p = EndAngleNodePoint(canvas);
            //if (HitUtil.PointInPoint(p, point, thWidth))
            //{
            //    m_lastPoint = p;
            //    return new NodePointArc3PointPoint(this, eCurrentPoint.endangle);
            //}
            //p = RadiusNodePoint(canvas);
            //if (HitUtil.PointInPoint(p, point, thWidth))
            //{
            //    m_lastPoint = p;
            //    return new NodePointArc3PointPoint(this, eCurrentPoint.radius);
            //}
            //return null;
        }