/// <summary> /// Рассчитывает карту indoor-среды для заданной карты. /// </summary> /// <param name="map"></param> /// <returns></returns> private static PixelMap calculateIndoorMap(PixelMap map) { Bitmap preciseIndoorMapBmp = map.GetBitmap(); Pen pen = new Pen(Parameters.wallColor); SolidBrush brush = new SolidBrush(Parameters.wallColor); Graphics graphics = Graphics.FromImage(preciseIndoorMapBmp); int r = Parameters.getR_robot() + Parameters.getR_robot() / 2; //увеличенные размеры робота, для того, чтобы на угловых участках траектории сглаживание происходило без проблем int d = Parameters.getD_robot() + Parameters.getR_robot(); for (int i = 0; i < map.Width; i++) { for (int j = 0; j < map.Height; j++) { if (map[i, j].Color == Parameters.wallColor) { try { FillCircle(ref graphics, ref pen, ref brush, r, d, ref i, ref j); } catch (Exception ex) { } } } } // preciseIndoorMapBmp.Save("C:\\Adocuments\\Library\\Clapeyron_ind\\task6 map creation\\PreciseIndoorMap13.png"); PixelMap preciseIndoorMap = new PixelMap(preciseIndoorMapBmp); return(preciseIndoorMap); }
/// <summary> /// отрисовать все три центра /// отрисовать радиусы для scan0 и scan1 /// </summary> /// <param name="preciseMapBmp"></param> /// <param name="graphics"></param> private void interfaceDrawing(Bitmap preciseMapBmp, Graphics graphics) { try { Pen pen; int X0 = crosslinker.getXY0()[0]; int Y0 = crosslinker.getXY0()[1]; int X1 = crosslinker.getXY1()[0]; int Y1 = crosslinker.getXY1()[1]; int X2 = crosslinker.getXY2()[0]; int Y2 = crosslinker.getXY2()[1]; if ((X0 >= 0) && (Y0 >= 0)) { preciseMapBmp.SetPixel(X0, Y0, Parameters.startColor); pen = new Pen(Parameters.startColor); graphics.DrawEllipse(pen, X0 - Parameters.getR_scan(), Y0 - Parameters.getR_scan(), Parameters.getD_scan(), Parameters.getD_scan()); graphics.DrawEllipse(pen, X0 - Parameters.getR_robot(), Y0 - Parameters.getR_robot(), Parameters.getD_robot(), Parameters.getD_robot()); } if ((X1 >= 0) && (Y1 >= 0)) { preciseMapBmp.SetPixel(X1, Y1, Parameters.finishColor); pen = new Pen(Parameters.finishColor); graphics.DrawEllipse(pen, X1 - Parameters.getR_scan(), Y1 - Parameters.getR_scan(), Parameters.getD_scan(), Parameters.getD_scan()); graphics.DrawEllipse(pen, X1 - Parameters.getR_robot(), Y1 - Parameters.getR_robot(), Parameters.getD_robot(), Parameters.getD_robot()); } if ((X2 >= 0) && (Y2 >= 0)) { preciseMapBmp.SetPixel(X2, Y2, Parameters.routeColor); } } catch (Exception ex) { } mouseMoveMap = new PixelMap(preciseMapBmp); mainForm.drawBitmapOnPictureBox1(preciseMapBmp); }