Esempio n. 1
0
        private void MAP_MouseMove(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Left)
            {
                if (isMouseDown)
                {
                    switch (ActiveTool)
                    {
                    case MapToolType.select:
                        break;

                    case MapToolType.zoomin:
                        double Dx2 = e.X - mouseDownPosition.X;
                        double Dy2 = e.Y - mouseDownPosition.Y;
                        if (Math.Abs(Dx2) > SHAKE || Math.Abs(Dy2) > SHAKE)
                        {
                            Delete(Cosmetic);
                            Cosmetic.Objects.Remove(border);
                            border = new PolyLine();
                            border.Style.Fatness = 1;
                            border.Style.LColour = Color.Aqua;
                            GeoPoint first  = ScreenToMap(mouseDownPosition);
                            GeoPoint second = ScreenToMap(e.Location);
                            border.AddNode(first);
                            border.AddNode(new GeoPoint(second.x, first.y));
                            border.AddNode(second);
                            border.AddNode(new GeoPoint(first.x, second.y));
                            border.AddNode(first);
                            Cosmetic.AddObject(border);
                            Cosmetic.Name = "Рамка";
                            AddLayer(Cosmetic);
                            Refresh();
                        }
                        break;

                    case MapToolType.zoomout:
                        break;

                    case MapToolType.pan:
                        double Dx = (e.X - mouseDownPosition.X) / mapScale;
                        double Dy = (e.Y - mouseDownPosition.Y) / mapScale;
                        mapCenter.x -= Dx;
                        mapCenter.y += Dy;
                        this.Refresh();
                        mouseDownPosition = e.Location;
                        break;

                    default:
                        break;
                    }
                }
            }
        }
Esempio n. 2
0
        public override void LoadFromFile(string filename)
        {
            System.IO.StreamReader FileText = new System.IO.StreamReader(filename);
            string        TempLine;
            List <string> DataStrings = new List <string>();
            bool          DataBegin   = false;

            Name = Path.GetFileNameWithoutExtension(filename);
            while ((TempLine = FileText.ReadLine()) != null)
            {
                TempLine = TempLine.ToLower();
                if ((DataBegin == true) && (TempLine != ""))
                {
                    DataStrings.Add(TempLine);
                }
                if (TempLine == "data")
                {
                    DataBegin = true;
                }
            }
            List <string> SeparatorArray;

            char[] SeparatorSymbols      = new char[] { ',', ' ', '(', ')' };
            char[] SeparatorSymbolsCoord = new char[] { ' ', '(', ')' };
            for (int i = 0; i < DataStrings.Count; i++)
            {
                SeparatorArray = (DataStrings[i].Split(SeparatorSymbolsCoord)).ToList();
                Split(SeparatorArray);

                double x, y, z;
                if (SeparatorArray.Count > 0)
                {
                    switch (SeparatorArray[0])
                    {
                    case "point":
                        ConvertPointInCorrectFormat(SeparatorArray);
                        x = double.Parse(SeparatorArray[1].Replace('.', ','));
                        y = double.Parse(SeparatorArray[2].Replace('.', ','));
                        z = double.Parse(SeparatorArray[3].Replace('.', ','));
                        Point point = new Point(x, y, z);
                        CountHeightAndConvert(point);

                        AddObject(point);
                        break;

                    case "line":
                        double x1, y1;
                        x  = double.Parse(SeparatorArray[1].Replace('.', ','));
                        y  = double.Parse(SeparatorArray[2].Replace('.', ','));
                        x1 = double.Parse(SeparatorArray[3].Replace('.', ','));
                        y1 = double.Parse(SeparatorArray[4].Replace('.', ','));
                        Line line = new Line(new GeoPoint(x, y), new GeoPoint(x1, y1));
                        if ((i + 1) < DataStrings.Count)
                        {
                            SeparatorArray = (DataStrings[i + 1].Split(SeparatorSymbols)).ToList();
                            Split(SeparatorArray);
                            if (SeparatorArray[0] == "pen")
                            {
                                i++;
                                line.Style.Fatness = int.Parse(SeparatorArray[1]);
                                line.Style.Type    = int.Parse(SeparatorArray[2]);
                                int Colour = int.Parse(SeparatorArray[3]);
                                line.Style.LColour = System.Drawing.Color.FromArgb((Colour & 0xFF0000) / 65536,
                                                                                   (Colour & 0xFF00) / 256,
                                                                                   (Colour & 0xFF));
                            }
                        }
                        AddObject(line);
                        break;

                    case "pline":
                        i++;
                        SeparatorArray = (DataStrings[i].Split(SeparatorSymbols)).ToList();
                        Split(SeparatorArray);
                        int      count    = int.Parse(SeparatorArray[0]);
                        PolyLine ponyline = new PolyLine();
                        for (int k = 0; k < count; k++)
                        {
                            i++;
                            SeparatorArray = (DataStrings[i].Split(SeparatorSymbolsCoord)).ToList();
                            Split(SeparatorArray);
                            x = double.Parse(SeparatorArray[0].Replace('.', ','));
                            y = double.Parse(SeparatorArray[1].Replace('.', ','));
                            ponyline.AddNode(new GeoPoint(x, y));
                            if ((i + 1) < DataStrings.Count && (k == count - 1))
                            {
                                SeparatorArray = (DataStrings[i + 1].Split(SeparatorSymbols)).ToList();
                                Split(SeparatorArray);
                                if (SeparatorArray[0] == "pen")
                                {
                                    i++;
                                    ponyline.Style.Fatness = int.Parse(SeparatorArray[1]);
                                    ponyline.Style.Type    = int.Parse(SeparatorArray[2]);
                                    int Colour = int.Parse(SeparatorArray[3]);
                                    ponyline.Style.LColour = System.Drawing.Color.FromArgb((Colour & 0xFF0000) / 65536,
                                                                                           (Colour & 0xFF00) / 256,
                                                                                           (Colour & 0xFF));
                                }
                            }
                            AddObject(ponyline);
                        }



                        break;

                    case "region":

                        i++;
                        SeparatorArray = (DataStrings[i].Split(SeparatorSymbols)).ToList();
                        Split(SeparatorArray);
                        count = int.Parse(SeparatorArray[0]);
                        Polygone ponygnya = new Polygone();
                        for (int k = 0; k < count; k++)
                        {
                            i++;
                            SeparatorArray = (DataStrings[i].Split(SeparatorSymbolsCoord)).ToList();
                            Split(SeparatorArray);
                            x = double.Parse(SeparatorArray[0].Replace('.', ','));
                            y = double.Parse(SeparatorArray[1].Replace('.', ','));
                            ponygnya.AddNode(new GeoPoint(x, y));
                            if ((i + 1) < DataStrings.Count && (k == count - 1))
                            {
                                SeparatorArray = (DataStrings[i + 1].Split(SeparatorSymbols)).ToList();
                                Split(SeparatorArray);
                                if (SeparatorArray[0] == "pen")
                                {
                                    i++;
                                    ponygnya.Style.Fatness = int.Parse(SeparatorArray[1]);
                                    ponygnya.Style.Type    = int.Parse(SeparatorArray[2]);
                                    int Colour = int.Parse(SeparatorArray[3]);
                                    ponygnya.Style.LColour = System.Drawing.Color.FromArgb((Colour & 0xFF0000) / 65536,
                                                                                           (Colour & 0xFF00) / 256,
                                                                                           (Colour & 0xFF));
                                }
                            }
                            if ((i + 1) < DataStrings.Count && (k == count - 1))
                            {
                                SeparatorArray = (DataStrings[i + 1].Split(SeparatorSymbols)).ToList();
                                Split(SeparatorArray);
                                if (SeparatorArray.Count > 0)
                                {
                                    if (SeparatorArray[0] == "brush")
                                    {
                                        i++;
                                        int Colour = int.Parse(SeparatorArray[2]);
                                        ponygnya.Brush.Color = System.Drawing.Color.FromArgb((Colour & 0xFF0000) / 65536,
                                                                                             (Colour & 0xFF00) / 256,
                                                                                             (Colour & 0xFF));
                                    }
                                }
                            }
                        }
                        AddObject(ponygnya);
                        break;

                    default: break;
                    }
                }
            }
        }