Example #1
0
        /// <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();
        }
Example #2
0
        /// <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();
        }