private void DrawObstacle(IGraphics g, WorldTransform wt, OperationalObstacle obs) { IPen pen = g.CreatePen(); pen.Width = nom_pixel_width / wt.Scale; pen.Color = classColors[(int)obs.obstacleClass]; g.DrawPolygon(pen, Utility.ToPointF(obs.poly)); if (obs.headingValid) { DrawingUtility.DrawArrow(g, obs.poly.GetCentroid(), Coordinates.FromAngle(obs.heading), 4, 0.75, Color.Black, wt); } if (ageRenderFlag || obs.ignored) { // draw the model confidence string labelString = ""; if (ageRenderFlag) { labelString += obs.age.ToString(); } if (obs.ignored) { if (labelString.Length != 0) { labelString += ", "; } labelString += "IGN"; } SizeF stringSize = g.MeasureString(labelString, labelFont); stringSize.Width /= wt.Scale; stringSize.Height /= wt.Scale; Coordinates labelPt = obs.poly.GetCentroid(); RectangleF rect = new RectangleF(Utility.ToPointF(labelPt), stringSize); float inflateValue = 4 / wt.Scale; rect.X -= inflateValue; rect.Y -= inflateValue; rect.Width += 2 / wt.Scale; g.FillRectangle(Color.FromArgb(127, Color.White), rect); g.DrawString(labelString, labelFont, Color.Black, Utility.ToPointF(labelPt)); } }