- •Давайте не будем изобретать колесо.
- •Прежде всего: Данные
- •Рисование и Упорство
- •Объект Graphics
- •Начинаем
- •Расположение и Размер
- •Вычислите Общее значение
- •Вычислите Доли и Нарисуйте Диаграмму
- •Рисуем диаграмму
- •Улучшите диаграмму
- •Заголовок
- •Пули (Bullets) и Информация о Компании
- •Расположите После Использования
- •Все сделано!
- •Нарисуем это!
- •Давайте начнем
- •Шаг 1: генерация данных
- •Шаг 2: Получаем элемент управления
- •Повторно используемые значения
- •Шаг 3: Установка полей, промежутки и размеры
- •Шаг 4а: Объекты Graphics и Bitmap
- •Шаг 4b: Вертикальная ось
- •Шаг 4c: Отметки и текст
- •Шаг 4d: Время для проверки
- •Шаг 5: Горизонтальная ось и панели
- •5B. Панели
- •5C. Названия стран
- •Шаг 6: Все показано!
- •Удачные диаграммы: Вторая помощь в круговых диаграммах. Часть 3
- •Разметка формы
- •Давайте начнем писать код
- •Временные переменные
- •Элементы пользовательского ввода
- •Получение данных
- •Создание диаграммы
- •Рисуем Panel
- •Финальное домоводство
- •Опция «Уппс!»
- •Настройка
- •Создаем данные
- •Элементы управления
- •Вертикальная ось
- •Точечные отметки шкалы
- •Проверяем 1, 2, 3
- •Базовая линия (ось X)
- •3D Панели
- •Последние штрихи
- •Удачные диаграммы. Часть 5 - Линейные графики
- •Данные для образца
- •Переменные
- •Внешние границы диаграммы
- •Объект Graphics
- •Вертикальная ось
- •Отметки
- •Горизонтальная ось (a.K.A. Базовая линия)
- •Рисование Линии (Линий)
- •Расчет вертикальной шкалы
- •Создаем и рисуем первый сегмент линии
- •Превращающаяся и исчезающая проблема линий
- •Первый сегмент линии
- •Остающиеся сегменты линии
- •Преобразования
- •Рисуем преобразованную линию
- •Проверяем
- •Отображаем месяцы
- •Отображаем результат
- •Соединения линий
- •Линии сетки
- •Горизонтальные линии сетки
- •Вертикальные линии сетки
- •Последнее отображение
- •Удачные диаграммы. Часть 6 - Динамическая линейная диаграмма
- •Элементы управления формы
- •Инициирующий код
- •Рисование направляющих линий диаграммы
- •Как это работает
- •Отображаем значения
- •Использование Vertical ScrollBar
- •Проверяем
- •Итоги первой демонстрации
- •Затененный график
- •Значения вертикальной оси
- •Код Вертикальных Значений
- •Подвижные направляющие линии
- •Отображаем направляющие линии
- •Направляющие линии и отображенные значения
- •Вертикальные значения
- •Возможные улучшения
- •Охваченные темы
Инициирующий код
Поместите этот оператор Imports вверху формы:
Imports System.Drawing.Drawing2D
Как вам известно, если вы читали предыдущие статьи этой серии, это позволит нам использовать в коде любые методы и свойства класса Drawing.Drawing2D не записывая полные имена каждый раз. В следующем шаге мы будем строить код, который выполняет все рисование в диаграмме, динамически изменяя дисплей каждый раз, когда в ScrollBar выбирается новое значение. Причина установки значения Maximum равным 104, (если мы хотим в действительности масштаб от 0 до 100) заключается в маленьком недостатке элемента ScrollBar. Если вы установите Maximum равным 100 и LargeChange равным 5, то наивысшее значение, которое вы сможете получить, переместив ползунок или щелкнув на стрелке ScrollBar’а, будет равно 96. Возможно, это официальная установка, но я решил, что смещение Maximum в соответствии с числом (LargeChange-1) добивается цели.
Рисование направляющих линий диаграммы
Следующий шаг – рисование горизонтальных направляющих линий. Они будут нарисованы, как только загрузится форма и (как вы вскоре увидите) перерисовываются всякий раз, когда диаграмма изменяется с добавлением новых данных. В этом первом примере, чтобы нарисовать направляющие линии, мы будем использовать данные, жестко закодированные в процедуре. Это делается для того, чтобы упростить код и сократить объяснения. Позже в статье мы будем применять более подвижный, модульный и более реалистичный подход. В окне Code формы добавьте следующую процедуру:
Private Sub DrawGuidelines(ByVal PicBox As PictureBox)
' Создаем bitmap, чтобы рассовать и захватывать объект Graphics
Dim bmp As New Bitmap(PicBox.Width, PicBox.Height)
Dim gr As Graphics = Graphics.FromImage(bmp)
' Рисуем направляющие линии на этом объекте graphics.
For i As Integer = 40 To 400 Step 40
gr.DrawLine(Pens.WhiteSmoke, 0, i, PicBox.Width, i)
Next i
' Присваиваем bitmap в качестве изображения PictureBox.
PicBox.Image = bmp
End Sub
Как это работает
Давайте проанализируем, что в действительности делает этот код. (Если вы читали предыдущие статьи, это уже знакомо вам, но если вы перепрыгнули сюда, в Часть 6, я уверен, что некоторые объяснения будут полезны для вас). Первые две строки кода в процедуре:
Dim bmp As New Bitmap(PicBox.Width, PicBox.Height)
Dim gr As Graphics = Graphics.FromImage(bmp)
могут быть разделены так:
1.
Dim bmp As New Bitmap
Создает объект Bitmap.
2.
(PicBox.Width, PicBox.Height)
Устанавливает размер этого Bitmap таким же,
как и PictureBox, на котором он будет изображен.
3.
Dim gr As Graphics: Создает объект Graphics.
(Объект Graphics можно рассматривать, как
своего рода «холст», который лежит на элементе и
на котором могут быть нарисованы фигуры и линии).
4.
= Graphics.FromImage(bmp)
Назначьте объект Graphics объекту Bitmap,
который мы только что создали.
Мы будем рисовать линии на объекте Graphics
Мы начали. Давайте проверим его. Вставьте в событие формы Load следующий код, который вызовет вышеуказанную процедуру и нарисует десять линий на равном расстоянии друг от друга на PictureBox:
Private Sub _1stDemo_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load
' Рисуем горизонтальные линии на Picturebox
DrawGuidelines(Me.picGraph)
End Sub

