Changeset 17264 for branches/2521_ProblemRefactoring/HeuristicLab.Problems.PTSP.Views/3.3/EuclideanPTSPDataView.cs
- Timestamp:
- 09/19/19 20:35:46 (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2521_ProblemRefactoring/HeuristicLab.Problems.PTSP.Views/3.3/EuclideanPTSPDataView.cs
r17260 r17264 20 20 #endregion 21 21 22 using System; 23 using System.Drawing; 24 using HeuristicLab.Data; 22 25 using HeuristicLab.MainForm; 23 26 using HeuristicLab.Problems.TravelingSalesman.Views; … … 35 38 public EuclideanPTSPDataView() { 36 39 InitializeComponent(); 40 SuspendLayout(); 41 Controls.Remove(coordinatesMatrixView); 42 coordinatesMatrixView.Dock = System.Windows.Forms.DockStyle.None; 43 coordinatesTabPage.Controls.Add(coordinatesMatrixView); 44 coordinatesMatrixView.Dock = System.Windows.Forms.DockStyle.Fill; 45 ResumeLayout(true); 37 46 } 38 47 … … 40 49 base.OnContentChanged(); 41 50 if (Content == null) { 42 51 probabilitiesView.Content = null; 43 52 } else { 44 53 probabilitiesView.Content = Content.Probabilities; 45 54 } 46 55 } … … 48 57 protected override void SetEnabledStateOfControls() { 49 58 base.SetEnabledStateOfControls(); 59 probabilitiesView.Enabled = !ReadOnly && !Locked && Content != null; 60 } 50 61 62 protected override void GenerateImage() { 63 if ((coordinatesPictureBox.Width > 0) && (coordinatesPictureBox.Height > 0)) { 64 if (Content == null) { 65 coordinatesPictureBox.Image = null; 66 } else { 67 DoubleMatrix coordinates = Content.Coordinates; 68 DoubleArray probabilities = Content.Probabilities; 69 Bitmap bitmap = new Bitmap(coordinatesPictureBox.Width, coordinatesPictureBox.Height); 70 71 if ((coordinates != null) && (coordinates.Rows > 0) && (coordinates.Columns == 2) && (probabilities.Length == coordinates.Rows)) { 72 double xMin = double.MaxValue, yMin = double.MaxValue, xMax = double.MinValue, yMax = double.MinValue; 73 for (int i = 0; i < coordinates.Rows; i++) { 74 if (xMin > coordinates[i, 0]) xMin = coordinates[i, 0]; 75 if (yMin > coordinates[i, 1]) yMin = coordinates[i, 1]; 76 if (xMax < coordinates[i, 0]) xMax = coordinates[i, 0]; 77 if (yMax < coordinates[i, 1]) yMax = coordinates[i, 1]; 78 } 79 80 int border = 20; 81 double xStep = xMax != xMin ? (coordinatesPictureBox.Width - 2 * border) / (xMax - xMin) : 1; 82 double yStep = yMax != yMin ? (coordinatesPictureBox.Height - 2 * border) / (yMax - yMin) : 1; 83 84 Point[] points = new Point[coordinates.Rows]; 85 for (int i = 0; i < coordinates.Rows; i++) 86 points[i] = new Point(border + ((int)((coordinates[i, 0] - xMin) * xStep)), 87 bitmap.Height - (border + ((int)((coordinates[i, 1] - yMin) * yStep)))); 88 89 using (Graphics graphics = Graphics.FromImage(bitmap)) { 90 for (int i = 0; i < points.Length; i++) 91 graphics.FillRectangle(Brushes.Red, points[i].X - 2, points[i].Y - 2, Convert.ToInt32(probabilities[i] * 20), Convert.ToInt32(probabilities[i] * 20)); 92 } 93 } else { 94 using (Graphics graphics = Graphics.FromImage(bitmap)) { 95 graphics.Clear(Color.White); 96 Font font = new Font(FontFamily.GenericSansSerif, 12, FontStyle.Regular); 97 string text = "No coordinates defined or in wrong format."; 98 SizeF strSize = graphics.MeasureString(text, font); 99 graphics.DrawString(text, font, Brushes.Black, (float)(coordinatesPictureBox.Width - strSize.Width) / 2.0f, (float)(coordinatesPictureBox.Height - strSize.Height) / 2.0f); 100 } 101 } 102 coordinatesPictureBox.Image = bitmap; 103 } 104 } 51 105 } 52 106 }
Note: See TracChangeset
for help on using the changeset viewer.