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; }
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); }