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

Финальное домоводство

Наконец, избавляемся от доступных объектов, которые больше не используются:

TextBrsh.Dispose()

TextFont.Dispose()

PattBrush.Dispose()

Restart Option

Опция «Уппс!»

    Мы почти все сделали. Пользователь может ввести столько данных, сколько их будет нужно и диаграмма может обновляться каждый раз, чтобы отобразить данные и выбранные шаблон/цвет. Но может наступить время, когда пользователь захочет начать все с начала. Вместо того, чтобы заставить его закрыть приложение и запустить его сначала, давайте дадим ему кнопку, чтобы удалить данные и очистить панель для других данных.     Этот код для события Click кнопки Restart, является всем необходимым:

Private Sub btnRestart_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnRestart.Click

UserData.Clear()

pnlChart.Invalidate()

End Sub

    Наш новый друг - метод Invalidate - снова делает за нас большую часть работы, снова удаляя все данные из массива.

Выводы

    В этой статье оригинальный код создания круговой диаграммы приближается еще ближе к сценарию реального мира, того, где пользователь вводит данные во время выполнения.     Был введен метод Invalidate и мы увидели, как он вызывает перерисовку элемента, для которого он был вызван. Для заполнения сегментов диаграммы выбранными образцами из перечисления HatchStyle был использован HatchBrush. В итоге, эта статья охватывает следующее:

  • Array

  • Brush

  • ColorDialog

  • Dispose

  • DrawPie

  • DrawRectangle

  • DrawString

  • FillPie

  • FillRectangle

  • Объект Font

  • HatchBrush

  • HatchStyle

  • Invalidate

  • Pen

  • StartAngle

  • Structure

  • SweepAngle

  • System.Enum.GetNames

  • System.Enum.Parse

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

Удачные диаграммы: GDI+ Работа с графикой. Часть 4

Автор: Ged Mead Перевод: Виталий Готовцов [Оригинал Статьи] [Обсудить в форуме]

Настройка

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

Создаем данные

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

Option Strict On

Imports System.Drawing.Drawing2D

Imports System.Collections

Structure GraphData

Dim Country As String

Dim Sales As Integer

Dim BarColor As Color

Sub New(ByVal country As String, ByVal sales As Short, _

ByVal barcol As Color)

Me.Country = country

Me.Sales = sales

Me.BarColor = barcol

End Sub

End Structure

' Создаем переменные

‘ # пиксели вертикальной оси установлены из PictureBox Left

Dim LeftMargin As Integer = 35

' # пиксели оставшиеся неиспользованными с правого края PictureBox

Dim RightMargin As Integer = 15

' Число пикселей выше верхней базовой линии

Dim BaseMargin As Integer = 35

' Верхнее поле

Dim TopMargin As Integer = 10

' Устанавливает размер пространства между панелями

Dim BarGap As Integer = 12

Dim SalesData As New ArrayList

Dim HighSale As Double ' Maximum sales figure

Dim VertScale As Double ' Scaling used for bar heights

' Младшие изменения для этой версии:

' Объявляет переменную для хранения объекта Graphics

Dim g As Graphics

' Переменная для Bitmap который должен быть отображен в PictureBox

Dim bmap As Bitmap

' Длинна вертикальной оси

Dim VertLineLength As Integer

Dim BarWidth As Integer ' width of bars

Dim BaseLineLength As Integer ' X Axis length

Private Sub GetData()

SalesData.Clear() ' Avoid data duplication

' Генерирует данные и помещает их в массив

SalesData.Add(New GraphData("Belgium", 934, Color.Blue))

SalesData.Add(New GraphData("Greece", 385, Color.DarkOrange))

SalesData.Add(New GraphData("Portugal", 1029, Color.Green))

SalesData.Add(New GraphData("Spain", 729, Color.IndianRed))

SalesData.Add(New GraphData("Turkey", 1472, Color.Tomato))

SalesData.Add(New GraphData("UK", 1142, Color.Aquamarine))

End Sub