public bool IsHitting(PointF mouseLocationInModel, DirectiveDraw entity) { ArcDraw arc = entity as ArcDraw; return(Geometry.PointInArc(mouseLocationInModel, arc.centerPosition, arc.startPosition, arc.endPosition, arc.degree, arc.lineWidth)); }
protected override void SetTrack(PointF ModelOrigin, Color backColor) { //构造直线轨迹 lines.Clear(); for (int i = 0; i < linesData.Count; i++) { PointF CanvasOrgion = DrawingUtils.Instance.CoordinateTrans(ModelOrigin); PointF startPosition = new PointF(CanvasOrgion.X + linesData[i][0].X, CanvasOrgion.Y + linesData[i][0].Y); PointF endPosition = new PointF(CanvasOrgion.X + linesData[i][1].X, CanvasOrgion.Y + linesData[i][1].Y); LineDraw line; if (i == linesData.Count - 1 && this.lastTrackIsLine) { line = new LineDraw(startPosition, endPosition, Properties.Settings.Default.TrackWidth, backColor, true, true); } else { line = new LineDraw(startPosition, endPosition, Properties.Settings.Default.TrackWidth, backColor, false, true); } this.lines.Add(line); } //构造圆弧轨迹 arcs.Clear(); foreach (var item in arcsData) { PointF canvasOrigion = DrawingUtils.Instance.CoordinateTrans(ModelOrigin); ArcDraw arc = new ArcDraw(new PointF(canvasOrigion.X + item.Item1[1].X, canvasOrigion.Y + item.Item1[1].Y), new PointF(canvasOrigion.X + item.Item1[0].X, canvasOrigion.Y + item.Item1[0].Y), new PointF(canvasOrigion.X + item.Item1[2].X, canvasOrigion.Y + item.Item1[2].Y), Properties.Settings.Default.TrackWidth, backColor, item.Item2); this.arcs.Add(arc); } }
public bool IsContain(RectangleF mouseRect, DirectiveDraw entity) { ArcDraw arc = entity as ArcDraw; if (arc.degree == 360f || arc.degree == -360f) { return(Geometry.RectContainCircle(mouseRect, arc.centerPosition, arc.radius)); } else { return(Geometry.RectContainArc(mouseRect, arc.centerPosition, arc.startPosition, arc.endPosition)); } }
protected override void SetTrack(PointF modelOrigin, Color backColor) { PointF canvasOrigion = DrawingUtils.Instance.CoordinateTrans(modelOrigin); this.startPoint = new DotDraw(new PointF(canvasOrigion.X + startPosition.X, canvasOrigion.Y + startPosition.Y), Properties.Settings.Default.TrackWidth * 0.5f, backColor, Color.Black); this.endPoint = new DotDraw(new PointF(canvasOrigion.X + endPosition.X, canvasOrigion.Y + endPosition.Y), Properties.Settings.Default.TrackWidth * 0.5f, backColor, Color.Black); this.arc = new ArcDraw(new PointF(canvasOrigion.X + centerPosition.X, canvasOrigion.Y + centerPosition.Y), new PointF(canvasOrigion.X + startPosition.X, canvasOrigion.Y + startPosition.Y), new PointF(canvasOrigion.X + endPosition.X, canvasOrigion.Y + endPosition.Y), Properties.Settings.Default.TrackWidth, backColor, degree); }
protected override void SetTrack(PointF ModelOrigin, Color backColor) { //构造直线轨迹 lines.Clear(); for (int i = 0; i < linesData.Count; i++) { PointF CanvasOrgion = DrawingUtils.Instance.CoordinateTrans(ModelOrigin); PointF startPosition = new PointF(CanvasOrgion.X + linesData[i][0].X, CanvasOrgion.Y + linesData[i][0].Y); PointF endPosition = new PointF(CanvasOrgion.X + linesData[i][1].X, CanvasOrgion.Y + linesData[i][1].Y); LineDraw line; if (i == linesData.Count - 1 && this.lastTrackIsLine) { line = new LineDraw(startPosition, endPosition, Properties.Settings.Default.TrackWidth, backColor, true, true); } else { line = new LineDraw(startPosition, endPosition, Properties.Settings.Default.TrackWidth, backColor, false, true); } this.lines.Add(line); } //构造圆弧轨迹 arcs.Clear(); foreach (var item in arcsData) { PointF canvasOrigion = DrawingUtils.Instance.CoordinateTrans(ModelOrigin); PointF centerPoint = MathUtils.CalculateCircleCenter(item.Item1[0], item.Item1[1], item.Item1[2]); float degree = -(float)MathUtils.CalculateDegree(new Anda.Fluid.Infrastructure.Common.PointD((double)item.Item1[0].X, (double)item.Item1[0].Y), new Anda.Fluid.Infrastructure.Common.PointD((double)item.Item1[1].X, (double)item.Item1[1].Y), new Anda.Fluid.Infrastructure.Common.PointD((double)item.Item1[2].X, (double)item.Item1[2].Y), new Anda.Fluid.Infrastructure.Common.PointD((double)centerPoint.X, (double)centerPoint.Y)); ArcDraw arc = new ArcDraw(new PointF(canvasOrigion.X + centerPoint.X, canvasOrigion.Y + centerPoint.Y), new PointF(canvasOrigion.X + item.Item1[0].X, canvasOrigion.Y + item.Item1[0].Y), new PointF(canvasOrigion.X + item.Item1[2].X, canvasOrigion.Y + item.Item1[2].Y), Properties.Settings.Default.TrackWidth, backColor, degree); this.arcs.Add(arc); } }