- •Давайте не будем изобретать колесо.
- •Прежде всего: Данные
- •Рисование и Упорство
- •Объект 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
- •Проверяем
- •Итоги первой демонстрации
- •Затененный график
- •Значения вертикальной оси
- •Код Вертикальных Значений
- •Подвижные направляющие линии
- •Отображаем направляющие линии
- •Направляющие линии и отображенные значения
- •Вертикальные значения
- •Возможные улучшения
- •Охваченные темы
Расположите После Использования
Все, что осталось сделать – это «домоводство» – удаление всех удаляемых графических объектов, которые мы создавали специально, когда рисовали.
TextBrsh.Dispose()
TextFont.Dispose()
Заметьте, что мы не пытаемся избавиться от всех объектов Brush и Pen, которые мы создавали «на лету» в коде и не избавляемся от объекта Graphics в этом особенном примере. Это находится в области, которую мы рассмотрим детальнее в дальнейших статьях, если ещё будем нуждаться в этом.
Все сделано!
Мне потребовалось много места, чтобы описать то, что фактически не требует много кода. Надеюсь, дополнительные детали и объяснения помогут вам создать ваши собственные версии круговых диаграмм и ключа. Есть образцовое решение, добавленное к этой статье, если вы хотите увидеть его в действии. Однако нет лучшего способа учиться, чем делать собственные ошибки, поэтому я рекомендую вам попытаться пройти код самостоятельно в новом проекте и возвращаться за объяснениями, если все будет происходить не так, как ожидается. Заключительная версия диаграммы и ключ должны выглядеть так:
Резюме
В этой первой статье нам представили объекты Graphics и Rectangle. Мы применили методы DrawPie и FillPie и посмотрели, как эти методы используют настройки Rectangle, StartAngle и SweepAngle для создания необходимого нам окончательного изображения. Мы использовали объект Brush для заполнения цветных сегментов, а так же рисования текста; объект Pen был использован для рисования линий, окружающих сегменты диаграммы и пуль (bullets). Мы видели, что шрифт (Font) также является объектом и мы могли использовать его Конструктор (Constructor) для создания нового экземпляра, основываясь на предпочитаемых названии, размере и стиле шрифта. Метод DrawString был использован для отображения текста в виде шрифта и цвета по нашему выбору. Мы использовали методы FillEllipse и DrawEllipse для создания круглых окрашенных пуль (bullets) в ключе. Мы увидели, что если мы помещаем рисующий код в событие OnPaint, то он будет перерисован всякий раз, когда поверхность формы будет открыта, скрыта или если на нее будет оказано иное визуальное воздействие. Мы узнали, что хорошее «домоводство» включает в себя избавление от доступных объектов, когда необходимость в них заканчивается. Итак, хотя количество кода, используемого в проекте, относительно невелико, он включает несколько ключевых графических техник, включая:
Объекты Brush
Метод DrawEllipse
FillEllipse
Dispose
DrawLine
DrawPie
DrawString
FillPie
Объект Font
Постоянство использования OnPaint
Объект Rectangle
SolidBrush
StartAngle
SweetAngle
Использование события OnPaint, чтобы сохранить рисунок
То, что мы сделали здесь, затрагивает только самую верхушку айсберга .NET Graphics. Мощь, возможности и потенциал графических инструментов, которые доступны вам, позволят внедрить ваши приложения в жизнь таким способом, который был бы труден, если не невозможен, любым другим способом. В будущих статьях мы продолжим использовать часть этой мощи. Попутно я надеюсь помочь в прояснении некоторых трудных условий и тайного синтаксиса, что заставляет многих разработчиков видеть в Graphics и GDI+ что-то от черной магии. В этом есть такой большой потенциал, что было бы стыдно не использовать хотя бы часть его, и – кто знает? – через время вы сможете преуспеть в превращении Графического Ученика в полностью квалифицированного Волшебника!
Удачные диаграммы: GDI+ Работа с графикой. Часть 2
Автор: Ged Mead Перевод: Виталий Готовцов [Оригинал Статьи] [Обсудить в форуме]