public override void Draw(System.Drawing.Graphics gc, Render.RenderParameter r, Render.RenderHint editState, Render.IDrawVisitor drawMethods, PointD mousePosition) { if (m_Param.Path != null) { /*if (editState.GetAttributes() == States.StateAttributes.Start) { if (m_Param.Path is Tools.Model.VectorPath) { if (r.StrokeFill != null) gc.FillPath(r.StrokeFill, (Tools.Model.VectorPath)m_Param.Path); gc.DrawPath(r.StrokeOutline, (Tools.Model.VectorPath)m_Param.Path); } } else*/ if (editState == Render.RenderHint.Start) { if (m_Param.Path is Tools.Model.VectorPath) { Pen dashPen = (Pen)r.StrokeOutline.Clone(); dashPen.DashStyle = System.Drawing.Drawing2D.DashStyle.Dot; if (m_Param.Path.PointCount > 0) { PointD firstPoint = (PointD)m_Param.Path.GetFirstPoint(); gc.DrawEllipse(dashPen, (float)firstPoint.X - Tools.Render.DrawHelper.TARGET_SIZE / 2.0f, (float)firstPoint.Y - Tools.Render.DrawHelper.TARGET_SIZE / 2.0f, (float)Tools.Render.DrawHelper.TARGET_SIZE, (float)Tools.Render.DrawHelper.TARGET_SIZE); if (r.StrokeFill != null) gc.FillPath(r.StrokeFill, ( Tools.Model.VectorPath)m_Param.Path); gc.DrawPath(r.StrokeOutline, ( Tools.Model.VectorPath)m_Param.Path); DrawRegionRepresentation(gc, r, drawMethods, mousePosition); } } } /*else if (editState.GetAttributes() == States.StateAttributes.Change) { /* drawMethods.DrawNegativeSpace(gc, m_Param, r); drawMethods.DrawPositiveSpace(gc, m_Param, r); *-/ DrawRegionRepresentation(gc, r, mousePosition); if (editState is States.RegionChange) ((States.RegionChange)editState).Handles.DrawHandles(gc, m_Param, r); }*/ else { /* drawMethods.DrawNegativeSpace(gc, m_Param, r); drawMethods.DrawPositiveSpace(gc, m_Param, r); */ if (m_Param.Path is Tools.Model.VectorPath) { if (r.StrokeFill != null) gc.FillPath(r.StrokeFill, (Tools.Model.VectorPath)m_Param.Path); gc.DrawPath(r.StrokeOutline, (Tools.Model.VectorPath)m_Param.Path); } DrawRegionRepresentation(gc, r,drawMethods, mousePosition); //TODO ((States.IFilterHandles)editState).Handles.DrawHandles(gc, m_Param, r); } drawMethods.DrawHandles(gc, this, r); } }
public void Draw(System.Drawing.Graphics gc, Render.RenderParameter r, Render.RenderHint editState, Render.IDrawVisitor drawMethods, PointD mousePosition) { if (m_Param.Path != null && m_Param.Path.PointCount >= 2) { try { if (m_visibleThickPath != null) { if (r.RegionInsideFill != null) gc.FillPath(r.RegionInsideFill, m_visibleThickPath); gc.DrawPath(r.RegionOutline, m_visibleThickPath); } gc.DrawPath(r.RegionOutline, (Tools.Model.VectorPath)m_Param.Path); } catch { // don't know what happened here } if (editState == Render.RenderHint.Start) { Pen dashPen = (Pen)r.RegionOutline.Clone(); dashPen.DashStyle = System.Drawing.Drawing2D.DashStyle.Dot; if (m_Param.Path.PointCount > 0) { PointD firstPoint = mousePosition; // TODO ((States.LineHover)editState).FirstPoint; gc.DrawEllipse(dashPen, (float)firstPoint.X - Tools.Render.DrawHelper.TARGET_SIZE / 2.0f, (float)firstPoint.Y - Tools.Render.DrawHelper.TARGET_SIZE / 2.0f, (float)Tools.Render.DrawHelper.TARGET_SIZE, (float)Tools.Render.DrawHelper.TARGET_SIZE); } /* PointD normal; double radius; NormalOfPoint(mousePosition, out normal, out radius); gc.DrawLine(r.ActivePen, (Point)mousePosition, (Point)(mousePosition - normal * radius)); */ } else { DrawArrowForces(gc, r, drawMethods); } drawMethods.DrawHandles(gc, this, r); // TODO ((States.IFilterHandles)editState).Handles.DrawHandles(gc, m_Param, r); } }