public void SetColour(double colourRange, double colourOffset) { if (HelperMethods.IsValidDouble(dataValue) && !cellCurrentlyIgnored) { double scalar = 360.0 / colourRange; double value = scalar * (dataValue - colourOffset); double H = (0.4 * (360.0 - value)) - 10.0; double S = 0.9; double B = 0.92; this.Style.BackColor = HelperMethods.HSVtoRGB(H, S, B); } else { this.Style.BackColor = Color.White; } }
public void PopulateFilteredCellGridView(DataGridViewTuningCell data) { SecondaryGridView.Rows.Clear(); SecondaryGridView.Columns.Clear(); List <String> columns = new List <string>(); double val = data.data.Min(); double range = data.data.Max() - val; int numberOfCells = Math.Min(10, data.data.Length); for (int x = 0; x < numberOfCells; x++) { columns.Add(String.Format("{0:0.00}", val)); val += range / (double)numberOfCells; } secondaryXValues = new double[numberOfCells]; int i = 0; SecondaryGridView.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells; foreach (string column in columns) { secondaryXValues[i] = Convert.ToDouble(column); DataGridViewTextBoxColumn cell = new DataGridViewTextBoxColumn(); cell.HeaderText = column; cell.Name = column; cell.Width = 45; cell.DefaultCellStyle.WrapMode = DataGridViewTriState.True; SecondaryGridView.Columns.Add(cell); i++; } double minY = data.secondaryData.Min(); minY = double.MaxValue; for (int index = 0; index < data.secondaryData.Length; index++) { if (data.secondaryData[index] < minY) { minY = data.secondaryData[index]; } } double maxY = data.secondaryData.Max(); double Range = maxY - minY; List <String> rows = new List <string>(); val = minY; numberOfCells = Math.Min(10, data.secondaryData.Length); List <Double> rowDoubles = new List <Double>(); for (int y = 0; y < numberOfCells; y++) { rows.Add(String.Format("{0:0.00}", val)); rowDoubles.Add(val); val += Range / (double)numberOfCells; } secondaryYValues = new double[rows.Count]; i = 0; foreach (double row in rowDoubles) { secondaryYValues[i] = row; i++; } SecondaryGridView.RowHeadersWidth = 60; SecondaryGridViewData = new int[data.secondaryData.Length, secondaryYValues.Length]; for (i = 0; i < SecondaryGridView.Columns.Count; i++) { for (int j = 0; j < secondaryYValues.Length; j++) { SecondaryGridViewData[i, j] = 0; } } //Iterate each time sample and add it to the appropriate x,y list int min = int.MaxValue; int max = int.MinValue; for (i = 0; i < data.secondaryData.Length; i++) { double x = data.data[i]; double y = data.secondaryData[i]; int[] coordinates = GetNearestCoordinate(x, y, secondaryXValues, secondaryYValues); SecondaryGridViewData[coordinates[0], coordinates[1]]++; } for (i = 0; i < secondaryXValues.Length; i++) { for (int j = 0; j < secondaryYValues.Length; j++) { if (SecondaryGridViewData[j, i] != 0) { if (SecondaryGridViewData[j, i] < min) { min = SecondaryGridViewData[j, i]; } if (SecondaryGridViewData[j, i] > max) { max = SecondaryGridViewData[j, i]; } } } } //Create a series of sums per x,y reference SecondaryGridView.RowHeadersWidth = 4; for (i = 0; i < secondaryYValues.Length; i++) { DataGridViewRow row = new DataGridViewRow(); row.HeaderCell = new DataGridViewRowHeaderCell(); row.HeaderCell.Value = secondaryYValues[i].ToString(); int widthTemp = (row.HeaderCell.Value.ToString().Length + 3) * 10; if (widthTemp > SecondaryGridView.RowHeadersWidth) { SecondaryGridView.RowHeadersWidth = widthTemp; } for (int j = 0; j < secondaryXValues.Length; j++) { DataGridViewTextBoxCell cell = new DataGridViewTextBoxCell(); if (SecondaryGridViewData[j, i] != 0) { cell.Value = SecondaryGridViewData[j, i].ToString(); double scalar = 360.0 / (max - min); double value = scalar * (SecondaryGridViewData[j, i] - min); double H = (0.4 * (360.0 - value)) - 10.0; double S = 0.9; double B = 0.92; cell.Style.BackColor = HelperMethods.HSVtoRGB(H, S, B);; } else { cell.Value = ""; } row.Cells.Add(cell); } SecondaryGridView.Rows.Add(row); } }