const int dashStyleTimes = 10; //显示边界风格切换的次数,到达10次之后切换边界风格,DashDot->Dash或Dash->DashDot public GraphicWaveGateView(WaveGate waveGate, OverViewDisplayer ovd) { displayer = ovd; canvas = displayer.Canvas; this.waveGate = waveGate; waveGateBrush = canvas.CreateSolidColorBrush(waveGate.IsSemiAuto ? Tools.GetColorFFromRgb(255, 255, 0) : Tools.GetColorFFromRgb(245, 222, 179)); coodinateSystem = displayer.coordinateSystem; //Selected = false; PolarCoordinate c = new PolarCoordinate { Az = waveGate.BeginAngle, //ProjectedDis = waveGate.BeginDistance; //之前版本将距离赋给ProjectedDis Dis = waveGate.BeginDistance }; innerLeft = coodinateSystem.CoordinateToPoint(c); c.Az = waveGate.EndAngle; //c.ProjectedDis = waveGate.EndDistance; //之前版本将距离赋给projectedDis c.Dis = waveGate.EndDistance; outterRight = coodinateSystem.CoordinateToPoint(c); geometry = coodinateSystem.BuildWaveGateGeometry(innerLeft, outterRight); }
private CoordinateTargetDotView GenerateGraphicTargetDotViewFromMouseLocation(Point mouseLocation) { PolarCoordinate coordinate = ((GraphicTrackDisplayer)displayer).coordinateSystem.PointToCoordinate(Tools.PointToPoint2F(mouseLocation)); //计算所属扇区 int sectorCount = targetProvider.GetSectorCount(); int sectorIndex = 0; double angleSpan = ((double)360) / sectorCount; for (int index = 0; index < sectorCount; index++) { if (coordinate.Az >= index * angleSpan && coordinate.Az < (index + 1) * angleSpan) { sectorIndex = index; break; } }//计算所属扇区完成 TargetDot dot = new TargetDot(coordinate.Az, coordinate.El, coordinate.Dis) { SectorIndex = sectorIndex }; TargetView view = ((GraphicTrackDisplayer)displayer).targetsManager.CreateTargetView(dot); return((CoordinateTargetDotView)view); }
private WaveGate CalWaveGate() { float r1 = (float)Tools.DistanceBetween(displayer.coordinateSystem.OriginalPoint, mouseDownPosition); float r2 = (float)Tools.DistanceBetween(displayer.coordinateSystem.OriginalPoint, mouseDragPosition); //拖动距离太小不处理,这个判断主要是排除鼠标点击操作 if (Math.Abs(r1 - r2) < 5 || Math.Abs(beginAngle - dragAngle) < 1) { return(null); } //发送波门位置信息 Point2F dragPosition = mouseDragPosition; PolarCoordinate c = displayer.coordinateSystem.PointToCoordinate(mouseDownPosition); //float dis1 = c.ProjectedDis; float dis1 = c.Dis; c = displayer.coordinateSystem.PointToCoordinate(dragPosition); //float dis2 = c.ProjectedDis; float dis2 = c.Dis; float begin = Tools.FindSmallArcBeginAngle(beginAngle, dragAngle); float end = Tools.FindSmallArcEndAngle(beginAngle, dragAngle); return(new WaveGate(begin, end, dis1, dis2, isSemiAutoWaveGate)); }
private void HOnMouseClick(object sender, MouseEventArgs mouseEventArgs) { if (Control.ModifierKeys == Keys.Control) //ctrl键按下,添加一个TrackGenerator { PolarCoordinate coordinate = coordinateSystem.PointToCoordinate(Tools.PointToPoint2F(mouseEventArgs.Location)); TargetManagerAddTrackGeneratorCommand generator = new TargetManagerAddTrackGeneratorCommand(coordinate); generator.Execute(); } DisplayControl.Focus(); }
public void MoveMoveHandler(object sender, MouseEventArgs e) { Point2F location = Tools.PointToPoint2F(e.Location); PolarCoordinate coordinate = displayer.coordinateSystem.PointToCoordinate(location); azString = "方位:" + coordinate.Az.ToString("0.0") + "°"; disString = "距离:" + coordinate.ProjectedDis.ToString("0.0") + "m"; RectF rect = new RectF(location.X + 10, location.Y + 30, location.X + 60, location.Y + 80); coordinateBoard?.Dispose(); coordinateBoard = displayer.Factory.CreateRoundedRectangleGeometry(new RoundedRect(rect, 5, 5)); }
public override PolarCoordinate PointToCoordinate(Point2F p) { PolarCoordinate c = new PolarCoordinate(); c.Az = Tools.AngleToNorth(OriginalPoint, p); float r = (float)Tools.DistanceBetween(OriginalPoint, p); float projectedDistance = (float)(r * Range * 2 / CoordinateArea.Width); c.ProjectedDis = projectedDistance; c.El = -1; //c.Dis = -1; c.Dis = c.ProjectedDis; c.El = 0; return(c); }
public override Point2F CoordinateToPoint(PolarCoordinate coordinate) { double r = (coordinate.Az / 360) * CoordinateArea.Width; // double height = coordinate.Dis * Math.Sin(Tools.DegreeToRadian(coordinate.El)); //正常计算高度代码!!!正式程序运行此行 //double height = coordinate.El; double h = height * CoordinateArea.Height / Range; float x1 = OriginalPoint.X + (int)r; float y1 = OriginalPoint.Y - (int)h; Point2F p = new Point2F(x1, y1); return(p); }
public override Point2F CoordinateToPoint(PolarCoordinate coordinate) { double projectedDistance; //if (coordinate.ProjectedDis != -1) //有待优化,取projectedDis的方式不合理 // projectedDistance = coordinate.ProjectedDis; //else // projectedDistance = coordinate.Dis * Math.Cos(DegreeToRadian(coordinate.El)); //水平面的投影距离 projectedDistance = coordinate.Dis; //会导致波门绘制失效 double r = (((double)CoordinateArea.Width / 2) / (Range)) * (projectedDistance); double sin = Math.Sin(Tools.DegreeToRadian(coordinate.Az)); double cos = Math.Cos(Tools.DegreeToRadian(coordinate.Az)); double x1 = r * sin; double y1 = r * cos; x1 = OriginalPoint.X + x1; y1 = OriginalPoint.Y - y1; Point2F p = new Point2F((int)x1, (int)y1); return(p); }
public TargetManagerAddTrackGeneratorCommand(PolarCoordinate coordinate) { this.coordinate = coordinate; }