Beispiel #1
0
        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));
        }
Beispiel #2
0
        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);
            }
        }
Beispiel #3
0
        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));
            }
        }
Beispiel #4
0
        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);
        }
Beispiel #5
0
        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);
            }
        }