/// <summary> /// Відображення таблиці із даними проставдених маркерів вкладки Піксель /// </summary> /// <param name="markerClass">Дані маркерів</param> /// <param name="bitmap">Зображення яке аналізується</param> /// <param name="tableName">Назва таблиці в якій відображатимуться дані</param> private void TableShowPix(MarkerClass markerClass, Bitmap bitmap, DataGridView tableName) { // Чистимо таблицю tableName.Columns.Clear(); tableName.Rows.Clear(); // якщо таблиця пуста то виходимо if (markerClass.MarkerDict.Count == 0) { return; } // Задаємо розміри таблиці int Ny = markerClass.MarkerDict.Count; // рядки // Змінна для збереження значення амплітуд сигналів через небезпечний код float[] Us = new float[Ny]; // Додаємо колонки і їх назви tableName.Columns.Add("Column1", "X"); tableName.Columns.Add("Column2", "Y"); tableName.Columns.Add("Column3", "Us"); // Додаємо підказаки, які відображатимуться при наведенні tableName.Columns[0].ToolTipText = "Координата X\nзліва на право"; tableName.Columns[1].ToolTipText = "Координата Y\nзнизу до верху"; tableName.Columns[2].ToolTipText = "Амплітуда сигналу Us"; // додаємо налаштування для забороги зміни значень for (int i = 0; i < tableName.Columns.Count; i++) { tableName.Columns[i].ReadOnly = true; } // задамо формат відображення всіх комірок tableName.DefaultCellStyle.Format = "F2"; // корегування формату деяких стовбців tableName.Columns[0].DefaultCellStyle.Format = "F0"; tableName.Columns[1].DefaultCellStyle.Format = "F0"; // Добавляємо кількість рядків в таблицю tableName.Rows.Add(Ny); // Отримуємо значення амплітуд сигналів Us = img.GetPixelFromImage(markerClass.MarkerDict, bitmap); #region Ще один варінт перерахунку /* перевырити швидкість * // Заповнюємо значеннями * for (int i = 0; i < Ny; i++) * { * // підписуємо нумерацію рядків * tableName.Rows[i].HeaderCell.Value = (Ny - i).ToString(); * * // заповнюємо комірки даними * tableName.Rows[i].Cells[0].Value = markerPix.MarkerList[Ny - i - 1].X; * tableName.Rows[i].Cells[1].Value = bitmap.Height - 1 - markerPix.MarkerList[Ny - i - 1].Y; * tableName.Rows[i].Cells[2].Value = Us[Ny - i - 1]; * //tableName.Rows[i].Cells[2].Value = bitmap.GetPixel(markerPix.markerMany[Ny - i - 1].X, * // markerPix.markerMany[Ny - i - 1].Y).G / 255f; * } */ #endregion int j = 1; // лічильник для рядків foreach (KeyValuePair <int, Point> i in markerClass.MarkerDict) { // підписуємо нумерацію рядків tableName.Rows[Ny - j].HeaderCell.Value = i.Key.ToString(); int k = 0; // лічильник для стовбців // заповнюємо комірки даними tableName.Rows[Ny - j].Cells[k++].Value = i.Value.X; tableName.Rows[Ny - j].Cells[k++].Value = bitmap.Height - 1 - i.Value.Y; tableName.Rows[Ny - j].Cells[k++].Value = Us[j - 1]; j++; } // вирівнюємо комірки за розмірами внутрішніх даних //tableName.AutoResizeColumnHeadersHeight(); tableName.AutoResizeColumns(); tableName.AutoResizeRows(); tableName.AutoResizeRowHeadersWidth(DataGridViewRowHeadersWidthSizeMode.AutoSizeToAllHeaders); // знімаємо виділення таблиці tableName.ClearSelection(); }
/// <summary> /// Відображення таблиці із даними проставдених ліній вкладки Лінія /// </summary> /// <param name="markerClass">Дані ліній</param> /// <param name="bitmap">Зображення яке аналізується</param> /// <param name="tableName">Назва таблиці в якій відображатимуться дані</param> private void TableShowLine(MarkerClass markerClass, Bitmap bitmap, DataGridView tableName) { // Чистимо таблицю tableName.Columns.Clear(); tableName.Rows.Clear(); // якщо таблиця пуста то виходимо if (markerClass.LineDict.Count == 0) { return; } // Задаємо розміри таблиці int Ny = markerClass.LineDict.Count; // рядки // задамо формат відображення всіх комірок tableName.DefaultCellStyle.Format = "F2"; // Додаємо колонки і їх назви tableName.Columns.Add("Column1", "X0"); tableName.Columns.Add("Column2", "Y0"); tableName.Columns.Add("Column3", "Xn"); tableName.Columns.Add("Column4", "Yn"); tableName.Columns.Add("Column5", "L"); tableName.Columns.Add("Column6", "α"); tableName.Columns.Add("Column7", "N"); // заборона редагування for (int i = 0; i < tableName.Columns.Count; i++) { tableName.Columns[i].ReadOnly = true; } tableName.Columns.Add(new DataGridViewCheckBoxColumn()); tableName.Columns[tableName.Columns.Count - 1].HeaderText = "Us(Ni)"; tableName.Columns[tableName.Columns.Count - 1].ReadOnly = false; { int k = 0; // лічильник // Додаємо підказаки, які відображатимуться при наведенні tableName.Columns[k++].ToolTipText = "Координата X\nпершої точки\nзліва на право"; tableName.Columns[k++].ToolTipText = "Координата Y\nпершої точки\nзнизу до верху"; tableName.Columns[k++].ToolTipText = "Координата X\nдругої точки\nзліва на право"; tableName.Columns[k++].ToolTipText = "Координата Y\nдругої точки\nзнизу до верху"; tableName.Columns[k++].ToolTipText = "Довжина лінії\n[пікселів]"; tableName.Columns[k++].ToolTipText = "Кут налилу лінії\n[градусів]"; tableName.Columns[k++].ToolTipText = "Кількість точок для графіка\n[пікселів]"; tableName.Columns[k++].ToolTipText = "Відображення на графіку і\nвиведення даних в таблицю"; } // задамо формат відображення всіх комірок tableName.DefaultCellStyle.Format = "F2"; // корегування формату деяких стовбців for (int i = 0; i < 4; i++) { tableName.Columns[i].DefaultCellStyle.Format = "F0"; } tableName.Columns[6].DefaultCellStyle.Format = "F0"; // Добавляємо кількість рядків в таблицю tableName.Rows.Add(Ny); int j = 1; // лічильник для рядків foreach (KeyValuePair <int, PointSort> i in markerClass.LineDict) { // підписуємо нумерацію рядків tableName.Rows[Ny - j].HeaderCell.Value = i.Key.ToString(); int k = 0; // лічильник для стовбців // заповнюємо комірки даними tableName.Rows[Ny - j].Cells[k++].Value = i.Value.FirstL.X; tableName.Rows[Ny - j].Cells[k++].Value = bitmap.Height - 1 - i.Value.FirstL.Y; tableName.Rows[Ny - j].Cells[k++].Value = i.Value.SecondL.X; tableName.Rows[Ny - j].Cells[k++].Value = bitmap.Height - 1 - i.Value.SecondL.Y; tableName.Rows[Ny - j].Cells[k++].Value = DimentionLine(i.Value.FirstL, i.Value.SecondL); tableName.Rows[Ny - j].Cells[k++].Value = AngleLine(i.Value);// + " °"; tableName.Rows[Ny - j].Cells[k++].Value = i.Value.PointN; tableName.Rows[Ny - j].Cells[k++].Value = markerClass.LineBool[i.Key]; j++; } // вирівнюємо комірки за розмірами внутрішніх даних //tableName.AutoResizeColumnHeadersHeight(); tableName.AutoResizeColumns(); tableName.AutoResizeRows(); tableName.AutoResizeRowHeadersWidth(DataGridViewRowHeadersWidthSizeMode.AutoSizeToAllHeaders); // знімаємо виділення таблиці tableName.ClearSelection(); }