Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование на BASIC / Visual Basic / Гед Мид. Удачные диаграммы GDI+ Работа с графикой [doc].doc
Скачиваний:
23
Добавлен:
02.05.2014
Размер:
870.4 Кб
Скачать

5C. Названия стран

    Названия стран отображены внизу каждой панели. В одной из следующих статей мы узнаем более интересные и иллюстративные способы, но пока нас устроит простой текст, использующий DrawString.     Так как процесс подобен тому, который мы уже использовали в этом проекте, комментированный код, я надеюсь, будет иметь смысл для вас на этом уровне:

' Устанавливаем начальную точку первой строки

Dim TextStartX As Integer = LeftMargin + BarGap + 4

' Создаем кисть для рисования текста

Dim TextBrsh As Brush = New SolidBrush(Color.Black)

' Создаем экземпляр объекта Font для отображения текста

Dim TextFont As New Font("Arial", 11, FontStyle.Bold)

For Each gd As GraphData In SalesData

' Рисуем название страны

g.DrawString(gd.Country, TextFont, TextBrsh, TextStartX, _

CInt(PBBarChart.Height - (BaseMargin - 4)))

' Перемещаем начальную точку вправо

TextStartX += CInt(BarWidth + BarGap)

Next

Шаг 6: Все показано!

    Вы, возможно, уже вставили следующую строку кода, если вы выбрали «пробовать все на ходу», чтобы увидеть, что диаграмма растет. Если вы этого не сделали, то настало время для этого.     Это не кажется важным, но на самом деле, это ключевая строка в процессе. Она берет объект Bitmap, на котором вы рисовали свою диаграмму и, наконец, показывает ее пользователю. Это происходит присваиванием Bitmap свойству Image элемента PictureBox.

' Назначаем изображение нарисованной диаграммы изображению picturebox

PBBarChart.Image = bmap

    Как мы узнали в Части 1, вам следует избавиться от всех доступных объектов, когда они будут не нужны. Этот код решает такую задачу:

' Избавляемся от рисующих объектов

g.Dispose()

LinePen.Dispose()

BarBrush.Dispose()

ValueFont.Dispose()

TextFont.Dispose()

End Sub

Снова, если вы не проверяли код во время чтения, то вам нужно добавить код для события click кнопки:

Private Sub btnDraw_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles btnDraw.Click

' Генерируем данные

GetData()

' Затем рисуем диаграмму

DrawChart()

End Sub

И вот у вас есть ваша первая простая, но работающая, гистограмма.

Итоги

    Эта статья построена на основных возможностях и техниках, охваченных в Части 1, а также добавила некоторые новые. Мы видели, что с очень маленьким количеством кода гистограмма может быть создана на пустом месте.     Вычисляя масштаб, мы гарантировали, что панели точно представляют цифры продаж, используя всю высоту доступной для рисования области. Благодаря использованию переменных для представления значений, таких, как поля вокруг диаграммы, код стал легче для чтения и редактирования.     Благодаря использованию двойной буферизации, диаграмма была нарисована на объекте Bitmap вне поля зрения пользователя, а затем изображение было применено к PictureBox после ее завершения. Эта техника уменьшила мерцание, а также гарантировала, что после того, как диаграмма была показана, она будет сохранена (это значит, что она будет перерисована, когда бы не была скрыта или изменена каким-либо образом).     Хотя завершенный код совсем короток, были использованы несколько важных методов класса Graphics и других навыков рисования: -

  • Объект Bitmap

  • Кисти

  • Создание объекта Graphics из Image

  • Избавление от объекта Graphics

  • Рисование на элементе PictureBox

  • Рисование линии

  • Рисование прямоугольника

  • Рисование строки

  • Закрашивание прямоугольника

  • Объект Font

  • Метод Offset

  • Кисти

  • Точки

  • Объект Rectangle

  • Масштабирование

    В Части 3 мы вернемся к круговой диаграмме и будем применять пользовательский ввод во время исполнения для создания диаграммы, основываясь на пользовательских данных и покажем результат. Сплошные цвета диаграммы также будут заменены HatchStyle выбранным пользователем.