/// <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);
        }
示例#2
0
 /// <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);
 }