Путь разработчика    

Нарисуйте заполненную картиной гистограмму в C#

Пример Сделать простая гистограмма в C# показывает, как рисовать гистограмму. В этом примере показано, как заполнять бары гистограммы изображениями.

Следующий метод TileRectangle заполняет прямоугольник изображением.

// Пометьте область из левого нижнего угла вверх.
private void TileRectangle(Graphics gr, RectangleF rect, Image picture)
{
    using (TextureBrush brush = new TextureBrush(picture))
    {
        // Переместите кисть, чтобы она начиналась с
        // Перебираем нижний левый угол.
        brush.(rect.Left, rect.Bottom);

        // Заполните.
        gr.FillRectangle(brush, rect);
    }
}

Этот код создает из изображения TextureBrush. Обычно, когда вы заполняете прямоугольник с помощью TextureBrush, кисть начинается с изображения в верхнем левом углу области. Гистограммы обычно начинаются с изображения в левом нижнем углу, поэтому этот метод использует метод TranslateTransform кисти, чтобы преобразовать начало кисти в нижний левый угол прямоугольника.

Затем метод заполняет прямоугольник кистью.

Следующий код вызывает метод TileRectangle.

// Нарисуем гистограмму.
private void DrawHistogram(Graphics gr, Color back_color,
    float[] values, int width, int height,
    float xscale, float yscale)
{
    gr.Clear(back_color);

    // Изображения, которые мы будем использовать для заполнения прямоугольников.
    Image[] images =
    {
        Properties.Resources.apple,
        Properties.Resources.banana,
        Properties.Resources.grapes,
        Properties.Resources.pear,
        Properties.Resources.strawberry,
        Properties.Resources.tomato,
    };

    // Рисуем гистограммы.
    for (int i = 0; i < values.Length; i++)
    {
        // Получаем границы прямоугольника в координатах устройства.
        float rect_wid = xscale;
        float rect_hgt = yscale * values[i];
        float rect_x = i * xscale;
        float rect_y = height - rect_hgt;

        // Создаем прямоугольник.
        RectangleF rect = new RectangleF(
            rect_x, rect_y, rect_wid, rect_hgt);

        // Заполните прямоугольник.
        TileRectangle(gr, rect, images[i]);

        // Очертите прямоугольник.
        gr.DrawRectangle(Pens.Black,
            rect_x, rect_y, rect_wid, rect_hgt);
    }
}

Этот метод очищает объект Graphics, а затем создает массив, содержащий изображения, которые он будет использовать. Я добавил изображения в программу во время разработки, выбрав «Проект»> «Свойства», щелкнув вкладку «Ресурсы», открыв раскрывающееся меню «Добавить ресурс» и выбрав «Добавить существующий файл».

Далее код проходит через значения гистограммы. Он масштабирует ширину и высоту каждого значения и использует результаты, чтобы сделать RectangleF для представления значения. Затем он вызывает TileRectangle, чтобы заполнить прямоугольник его изображением, а затем очерчивает прямоугольник.

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

// Нарисуем гистограмму.
private void picHisto_Paint(object sender, PaintEventArgs e)
{
    // Вычисление преобразования в карту
    // значения данных в PictureBox.
    float xscale = picHisto.ClientSize.Width / (float)DataValues.Length;
    float yscale = picHisto.ClientSize.Height / (float)(MAX_VALUE - MIN_VALUE);

    DrawHistogram(e.Graphics, picHisto.BackColor, DataValues,
        picHisto.ClientSize.Width, picHisto.ClientSize.Height,
        xscale, yscale);
}

Этот код вычисляет масштабные коэффициенты в направлениях X и Y для отображения диапазона допустимых значений на PictureBox.

Источник: http://csharphelper.com/blog/2017/09/draw-picture-filled-histogram-c/



Отзывы (через Facebook):

Оставить отзыв с помощью аккаунта FaceBook:

Размер шрифта для соответствия метке в C#

Следующий метод SizeLabelFont показывает, как размер шрифта соответствует тексту Label. Он дает Label самый большой возможный шрифт, сохраняя при этом его...

20 01 2020 22:25:19

Сортировка ListView, используя столбец, который вы нажимаете на C#

Вы можете сортировать ListView с помощью столбца, который вы нажимаете, но это намного больше, чем просто сортировка элементов ListView. Для сортировки с и...

19 01 2020 3:27:56

Дмитрий Осипов - Delphi XE2

Настоящее издание посвящено новейшей разработке компании Embarcadero - языку Delphi XE2. Книга предоставляет читателю не только полное описание одного из с...

18 01 2020 3:35:28

Рисуем деревья вертикально или горизонтально в C#

Пример Обработать общие события мыши TreeNode в C# показывает, как создать общий класс узлов, который может рисовать деревья с узлами, которые содержат что...

17 01 2020 12:11:42

Как извлечь текст из метафайла в C#

Пример Перечислить записи в метафайле в C# показывает, как перечислить записи в метафайле. В этом примере перечислены записи, ищет те, которые представляют...

16 01 2020 11:54:33

Класс Java StringBuilder

Java StringBuilder идентичен StringBuffer, за исключением одного важного различия, которое не синхронизировано, это означает, что он не является потокобезо...

15 01 2020 12:15:14

Как разделить и объединить строки в C#

В этом примере показано, как использовать методы string для разделения и объединения строк. Метод string класса Split разбивает строку на части, разделенны...

14 01 2020 11:57:29

Позвольте пользователю выбрать критерии поиска базы данных в C#

Верхняя часть этой программы содержит три столбца элементов управления. В левом столбце содержатся комбинированные поля, содержащие имена полей в таблице б...

13 01 2020 17:54:55

Используйте спрайты для анимации нескольких прыгающих мячей в C#

Этот пример аналогичен описанному в сообщении Анимация нескольких подпрыгивающих шары в C# , за исключением того, что использует спрайты для управления шар...

12 01 2020 14:22:23

Сделать общие методы Min и Max в C#

В этом примере показано, как вы можете создать общие методы Min и Max, чтобы найти минимальное и максимальное значения в последовательности параметров. Мет...

11 01 2020 22:42:54

Что такое анонимная функция в JavaScript?

Два наиболее распространенных способа создания функции в Javascript - это использование объявления функции или оператора функции. Анонимные функции создают...

10 01 2020 13:11:56

Может ли класс верхнего уровня быть закрытым или защищенным в Java

Нет. Класс верхнего уровня как закрытый был бы совершенно бесполезен, потому что ничто не имело бы к нему доступа. Если класс верхнего уровня объявлен как...

09 01 2020 0:59:31

Плитка настольных окон в строках и столбцах в C#

Пример Список окон рабочего стола на C# показывает, как перечислить в настоящее время работает Windows. В этом примере этот метод используется для заполнен...

08 01 2020 11:37:48

Как аннотации работают на Java?

Аннотации Java используются для предоставления метаданных для Java-кода, хотя они не являются частью самой программы. Метаданные - это данные о данных. Так...

07 01 2020 10:43:32

Определение горячих точек карты в C#

Пример Отображение масштабируемой карты с горячими точками в C# использует список горячих точек, определенных следующим кодом. Итак, как вы можете найти оп...

06 01 2020 12:36:38

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

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

05 01 2020 10:58:31

HTML5 для веб-дизайнеров (Кит Джереми)

В HTML5 появилось много интересных тэгов, в том числе поддержка аудио и видео-файлов. Теперь вам не надо тратить время на установку плагинов для проигрыван...

04 01 2020 12:26:19

Графически часы в C#

Элемент DateTimePicker позволяет выбирать даты и диапазоны дат, но нет стандартного элемента управления, который позволяет вам выбирать часы. В этом пример...

03 01 2020 11:26:24

Отображение метафайла Windows (wmf) в C#

Метафайк Windows (wmf) - это файл изображения, содержащий инструкции для рисования фигур. Напротив, растровые, PNG, JPG и другие файлы растровых изображени...

02 01 2020 5:43:27

Разница между памятью Stack and Heap в Java

Модель Java Heap и Stack Memory определяет, как и когда разные потоки могут видеть значения, записанные в общие переменные другими потоками, и как синхрони...

01 01 2020 1:17:49

Отображение записи базы данных без привязки данных в C#

Многие программы используют привязку данных для отображения записей в базе данных. Этот метод прост (по крайней мере, в том, что касается кода, который вы...

31 12 2019 8:31:47

Переменные и типы данных JavaScript

Данные могут быть разных типов. Типы данных зависят от значений, которые удерживаются переменной. Следующий урок охватывает динамические типы данных JavaSc...

30 12 2019 7:24:45

Освобождена ли вся память при выходе из Python?

Согласно официальной документации Python , вы можете заставить сборщика мусора для выпуска unreferenced памяти с помощью gc.collect(). Тем не менее, один и...

29 12 2019 16:45:40

Чтение и запись объектов в Java

Сериализация - это преобразование объекта в последовательность байтов, чтобы объект можно было легко сохранить в постоянном хранилище или потоковом потоке...

28 12 2019 9:33:31

Массивы в JavaScript

Массив - это структура данных, состоящая из набора элементов, каждый из которых идентифицируется по меньшей мере одним индексом или ключом массива. Он испо...

27 12 2019 10:55:53

Сделать свойство индексатора по умолчанию для класса в C#

Классы, такие как Dictionary и List предоставляют свойство индексатора по умолчанию, которое позволяет вам получать доступ к значениям, используя синтаксис...

26 12 2019 22:32:40

Использование обработчика событий для нескольких элементов управления в C#

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

25 12 2019 7:19:51

Объектно-ориентированное программирование в С++ (Лафоре Р. 2004)

Изучение объектно-ориентированной парадигмы программирования обычно ассоциируется с многочасовым курсом лекций и утомительными лабораторными занятиями, во...

24 12 2019 10:10:26

Qt 5.3. Профессиональное программирование на C++ (Шлее М.)

  Книга посвящена разработке приложений для Windows, Mac OS X и Linux с использованием библиотеки Qt версии 5.3. Подробно рассмотрены возможности, предостав...

23 12 2019 0:23:44

Класс BufferedWriter в Java

Класс BufferedWriter обладает функциональностью записи буферов символов в файл. Он расширяет Writer, который является абстрактным классом для записи потоко...

22 12 2019 11:25:23

Язык программирования C# (Хейлсберг А. 2012)

Перед вами — четвертое издание главной книги по языку C#, написанной легендой программирования — Андерсом Хейлсбергом, архитектором C#, Delphi и Turbo Pasc...

21 12 2019 8:26:41

Анимация проблемы Башни Ханоя в C#

Следующий метод AnimateMovement перемещает диск по прямой линии из текущего местоположения в новый. Код вычисляет количество пикселей в секунду, которое он...

20 12 2019 11:46:51

Обработка исключений в C#

Что такое исключение? Исключение .NET - это объект, который описывает условие ошибки во время выполнения. Когда возникает условие ошибки во время выполнени...

19 12 2019 0:37:18

Отображение предопределенных значков системы в C#

В этом примере отображаются доступные системные значки. Следующий способ DrawIconSample отображает значок и его название. Код вызывает метод Graphics объек...

18 12 2019 21:29:23

Стандартные исключения в C#

Пример Используйте try блоки блокировки для защиты от непредвиденных ошибок в C# объясняют, как поймать исключение, и вкратце упоминает, что вы можете испо...

17 12 2019 5:12:59

Что такое NullPointerException в Java

NullPointerException - исключение RuntimeException. Исключения в Runtime являются критическими и не могут быть пойманы во время компиляции. Они приводят к...

16 12 2019 10:17:14

Программирование на С++ глазами хакера, 2-е издание (Михаил Фленов)

Рассмотрены нестандартные приемы программирования, а также примеры использования недокументированных функций и возможностей языка C++ при разработке шуточн...

15 12 2019 18:18:44

Получить имя первого дня недели в C#

Различные культуры начинают неделю с другого первого дня недели. Например, некоторые культуры начинают неделю с понедельника, а другие начинают с воскресен...

14 12 2019 11:16:17

Класс Java StringBuilder

Java StringBuilder идентичен StringBuffer, за исключением одного важного различия, которое не синхронизировано, это означает, что он не является потокобезо...

13 12 2019 17:40:45

Область из непрозрачных пикселей в C#

Пример Создание профилей PictureBoxes в C# устанавливает Region из двух элементов управления PictureBox для круговых областей. Это хорошо работает в этом п...

12 12 2019 2:21:43

Что такое скрипт Bash?

Сценарий Bash - это простой текстовый файл, содержащий ряд команд.  Эти команды представляют собой смесь команд, которые мы обычно будем вводить в командной строке...

11 12 2019 17:18:28

Объявлять и инициализировать пустые массивы в C#

Это удобный трюк для работы с возможными пустыми массивами. Программа C# не может использовать свойства и методы массива, пока не будет создан экземпляр ма...

10 12 2019 13:25:39

Создаем динамические веб-сайты с помощью PHP, MySQL, JavaScript и CSS (Р. Никсон)

Научитесь создавать современные динамические веб-сайты, даже если у вас нет опыта в программировании. Если вы умеете писать статические сайты на HTML, то с...

09 12 2019 18:18:20

Выделение эллипса в программе WPF с использованием C#

В этом примере показано, как вы можете визуализировать эллипс в программе WPF. Обычно для рисования фигур в WPF вы используете какой-то объект. Вы можете д...

08 12 2019 15:50:51

Среда разработки PyCharm

PyCharm – интегрированная среда разработки для Python. Разрабатывалась компанией JetBrains. За основу взята другая интегрированная среда разработки Intelli...

07 12 2019 6:58:14

Вектор в Java

Java-векторы обычно используются вместо массивов, поскольку они автоматически расширяются при добавлении новых данных. Это означает, что экземпляры Vector,...

06 12 2019 15:18:40

Сделайте значки приложений приложений Windows Forms на соответствующих размерах в C#

Установка значка формы проста. Просто выберите форму в редакторе форм и установите ее свойство Icon. Windows использует этот значок разными способами. Напр...

05 12 2019 4:54:19

Среда разработки NetBeans

NetBeans – бесплатно распространяемая среда разработки для языков C, C++, Java, PHP, Javascript, Python и прочих. Этот проект разрабатывается независимой г...

04 12 2019 17:33:38

Использование базовой вставки с пользовательскими торцевыми заглушками в C#

Пример Нарисуйте линии с пользовательскими заглушками в C# показывает, как рисовать линии с пользовательскими заглушками. Например, используя эти методы, в...

03 12 2019 14:33:58

Java Autoboxing и Unboxing

Autoboxing и Unboxing - это функции, включенные в Java 1.5, где автоматическое преобразование происходит от примитивного типа до соответствующего класса кл...

02 12 2019 19:47:17

Создайте библиотеку кнопок XAML в C#

В этом примере показано, как можно создать библиотеку кнопок XAML с возможностью повторного использования в WPF. Пример Создание шаблона кнопки WPF в C# ис...

01 12 2019 4:10:44

Как проверить строку как литерал и как объект? JavaScript

Оператор typeof JavaScript возвращает строку, которая идентифицирует тип данных выражения. Он используется для получения типа данных (возвращает строку) ег...

30 11 2019 8:40:57

Полностью обосновать абзацы текста в C#

Класс StringFormat делает его достаточно простым для выравнивания по левому краю, выравнивания по правому краю или центровки строки текста, но, как ни стра...

29 11 2019 13:38:38

Преобразование файлов doc в файлы docx в C#

В этом примере показано, как написать программу на C# для автоматического преобразования файлов doc в файлы docx. В предыдущей версии Windows, когда я дваж...

28 11 2019 22:44:39

Как создать главное меню игры в Unity 5

В этом уроке мы разберем как создать главное меню игры в Unity 5. Меню мы будем делать при помощи UI, добавленного в Unity 5....

27 11 2019 22:44:34

Добавить варианты ComboBox во время выполнения в C#

В этом примере вы можете добавить ComboBox варианты, когда пользователь выбирает их во время выполнения. Чтобы отслеживать выбор для будущего использования...

26 11 2019 20:35:38

Как программировать на Visual C# 2012 (Пол Дейтел, Харви Дейтел)

Эта книга, выходящая уже в пятом издании, является одним из самых популярных в мире учебников по программированию на платформе Microsoft .NET на языке Visu...

25 11 2019 12:36:32

Среда разработки Xcode

Xcode – IDE под Mac OS от Apple. Распространяется бесплатно через App Store. Благодаря свободному набору компиляторов данная среда разработки может работат...

24 11 2019 7:42:35

Пользовательский ввод в Bash

Если мы хотим попросить пользователя ввести его, мы будем использовать команду read .  Эта команда берет ввод и сохраняет его в переменной. read var1 Давайте рассмотрим простой пример:...

23 11 2019 1:37:44

Преобразование файлов RTF и TXT в файлы DOCX в C#

Когда вы вводите имена входных и выходных файлов и нажмите « Конвертировать», программа использует следующий код, чтобы открыть файл и сохранить его в новом...

22 11 2019 20:36:18

Преобразование строки в соответствующий регистр в C#

В надлежащем случае (или титульный регистр) первая буква каждого слова капитализируется. Это довольно легко, когда вы знаете, где найти метод, который прео...

21 11 2019 4:36:56

Как преобразовать TimeStamp в Date в Java?

API JDBC использует отдельный класс Date, Time и Timestamp для подтверждения типа данных DATE, TIME и DATETIME из базы данных, но большая часть объектно-ор...

20 11 2019 10:53:55

Смотрите, где парабола и гипербола пересекаются в C#

В этом примере показано, как пересекаться парабола и гипербола. Предыдущий пример из четырех частей здесь , здесь < / a>, здесь , и здесь объясняет, как на...

19 11 2019 10:35:30

1С:Предприятие. Практика программирования на платформе V7 (Н. Колпинский)

1 С: Предприятие. Практика программирования на платформе V7  Данные материалы рассчитаны на пользователей, знакомых с интерфейсом «1 С: Предприятия» и имеющих н...

18 11 2019 4:24:21

Запись данных Excel в C#

В этом примере показано, как записывать данные Excel в рабочую книгу. Вы можете сделать это, открыв приложение Excel и используя его в качестве сервера для...

17 11 2019 18:37:44

Пиксельные части изображения в C#

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

16 11 2019 10:12:42

Разница между capacity() и size() вектора в Java

Разница между capacity() и size() в Java.util.Vector заключается в том, что size() - это количество элементов, которые в настоящее время удерживаются, а ca...

15 11 2019 12:17:12

Как распечатать ListView с большим содержимым в C#

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

14 11 2019 4:49:47

Среда разработки Intellij idea

IntelliJ IDEA — интегрированная среда разработки программного обеспечения на многих языках программирования от компании JetBrains. В 2001 году была выпущен...

13 11 2019 2:25:32


Parse error: syntax error, unexpected ',' in /home/users/9/9161484547/domains/flash-mx.ru/lessons/926.php on line 69