Exemplo n.º 1
0
        public Form1()
        {
            InitializeComponent();
            Application.AddMessageFilter(this);
            pictureBox1.MouseWheel += PictureBox1_MouseWheel;
            textBoxPickRadius.Text  = _pickRadius.ToString();
            textBoxMaxVect.Text     = _nVect.ToString();
            _stressTable            = new StressTable();
            _azimImage              = _buildAZIM(Color.FromArgb(100, Color.White));
            _azimImageUser          = _buildAZIM(Color.HotPink);
            _azimImageClose         = _buildAZIM(Color.Orange);
            pictureBox1.BackColor   = Color.Black;
            _layerMap         = new Layer(_paintMAP);
            _layerStress      = new Layer(_paintSTRESS);
            _layerDynamic1    = new Layer(_paintDYNAMIC1);
            _layerDynamic2    = new Layer(_paintDYNAMIC2);
            _activeTransBrush = new SolidBrush(Color.FromArgb(100, Color.Red));
            _radBrush         = new SolidBrush(Color.FromArgb(50, Color.White));
            _mapLinePen       = new Pen(Color.FromArgb(50, Color.LightSteelBlue));
            _mapThickPen      = new Pen(Color.FromArgb(200, Color.LightSteelBlue));
            _rwmap            = new WSMMap();
            _rwmap.Color(RegionInfo.CurrentRegion.EnglishName, Brushes.Orchid);
            _citiesMAJOR = new WSMCities(Properties.Resources.citiesMAJOR);
            _citiesALL   = new WSMCities(Properties.Resources.citiesALL);
            _ttC         = new TooltipContainer(pictureBox1);
            Width        = 1000;
            Height       = 1000;

            _mapLines();

            _updateProjection();
            toolStripDropDownButton1.SelectedIndex = 0;
        }
Exemplo n.º 2
0
        private void _updateProjection()
        {
            double x, y;

            double lat = trackBar1.Value / 100.0;

            labelLAT.Text = lat.ToString(CultureInfo.InvariantCulture);
            labelLAT.Refresh();
            double lon = trackBar2.Value / 100.0;

            labelLONG.Text = lon.ToString(CultureInfo.InvariantCulture);
            labelLONG.Refresh();
            _zoomRadius   = trackBar3.Value;
            labelRAD.Text = _zoomRadius.ToString(CultureInfo.InvariantCulture);
            labelRAD.Refresh();


            _ortho = new OrthographicProjection(lat, lon);

            _stressTable.ProjectToTangentPlane(_ortho, textBoxFILTER.Text);

            // extras
            StressTable.ProjectToTangentPlane(_ortho, _myList);
            StressTable.ProjectToTangentPlane(_ortho, _closeList);

            foreach (var mLine in mapLines)
            {
                foreach (var item in mLine.Collection)
                {
                    if (_ortho.ToTangentPlane(item.Latitude, item.Longitude, out x, out y))
                    {
                        item.ProjectedX = x;
                        item.ProjectedY = y;
                    }
                    else
                    {
                        item.ProjectedX = double.NaN;
                        item.ProjectedY = double.NaN;
                    }
                }
            }

            if (cities != null)
            {
                foreach (NamedCoordinate nC in cities.Collection)
                {
                    if (_ortho.ToTangentPlane(nC.Latitude, nC.Longitude, out x, out y))
                    {
                        nC.ProjectedX = x;
                        nC.ProjectedY = y;
                    }
                    else
                    {
                        nC.ProjectedX = double.NaN;
                        nC.ProjectedY = double.NaN;
                    }
                }
            }

            foreach (WSMCountry cDef in _rwmap.Collection)
            {
                var cc = cDef.CentralCoordinate;
                if (_ortho.ToTangentPlane(cc.Latitude, cc.Longitude, out x, out y))
                {
                    cc.ProjectedX = x;
                    cc.ProjectedY = y;
                }
                else
                {
                    cc.ProjectedX = double.NaN;
                    cc.ProjectedY = double.NaN;
                }

                foreach (WSMPolygon poly in cDef.Collection)
                {
                    int nOk = 0;
                    poly.MinX = poly.MinY = double.MaxValue;
                    poly.MaxX = poly.MaxY = double.MinValue;
                    foreach (BaseCoordinate item in poly.Collection)
                    {
                        if (_ortho.ToTangentPlane(item.Latitude, item.Longitude, out x, out y))
                        {
                            item.ProjectedX = x;
                            item.ProjectedY = y;
                            nOk++;
                            poly.MinX = Math.Min(poly.MinX, x);
                            poly.MinY = Math.Min(poly.MinY, y);
                            poly.MaxX = Math.Max(poly.MaxX, x);
                            poly.MaxY = Math.Max(poly.MaxY, y);
                        }
                        else
                        {
                            item.ProjectedX = double.NaN;
                            item.ProjectedY = double.NaN;
                        }
                    }
                    poly.Draw = nOk >= 3;
                }
            }


            _invalidateAllLayers(false);
        }