Сделайте простую гистограмму в C#

В этом примере показана гистограмма, показывающая распределение случайных значений, которые моделируют прокатку двух 6-сторонних кубиков.

Во время разработки я дал форме программы две группы элементов Label в нижней части формы. В нижней группе отображаются метки для баров, которые в этом случае равны 2, 3, 4, ..., 12.

Вторая группа ярлыков формирует цветные полосы. Эти метки называются lbl2, lbl3 и т. д.

Когда программа запускается, она использует следующий код для генерации некоторых случайных данных.

Эта программа имитирует сканирование двух 6-сторонних кубиков для генерации значений между 2 и 12. В нем хранится количество раз, которое генерируется значением в массиве counts с индексами от 0 до 11. Например, когда данные закончены, значение counts [0] содержит количество раз, когда было создано значение 2.

Программа сначала создает массив counts, чтобы удерживать подсчеты. Затем он вводит цикл, который устанавливает new_value равный двум случайным числам между 1 и 6. Затем он увеличивает соответствующую запись counts.

После завершения создания значений код вызывает следующий метод MakeHistogram для отображения гистограммы.

Этот метод сначала получает доступную высоту и наибольшее значение в массиве values. Из них он вычисляет масштабный коэффициент, который он может использовать для обеспечения того, чтобы наибольшее значение находилось в доступном пространстве.

Далее код перебирает значения. Для каждого значения метод вычисляет соответствующую высоту. Затем он устанавливает соответствующее свойство Label управления Top в положение, которое оно должно иметь, чтобы сохранить его нижнее положение в своем текущем положении, когда оно имеет новую высоту. Затем он устанавливает высоту элемента управления. (Как вы думаете, если вы установите Height перед установкой Top?)

Источник: http://csharphelper.com/blog/2015/12/use-label-controls-to-make-a-simple-bar-chart-in-c/

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)

Add a Comment

Ваш e-mail не будет опубликован. Обязательные поля помечены *