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

Удачные диаграммы: Вторая помощь в круговых диаграммах. Часть 3

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

Разметка формы

    Поскольку эти статьи имеют целью показать вам, как использовать классы Graphics, я не буду углубляться в не-графический материал там, где это возможно. Так, чтобы сократить процесс создания формы Windows и его элементов управления я подключил проект, содержащий скелетную форму (т.е. содержащую элементы управления, но без графического кода. Вы найдете ее в папке, названной «Skeleton» («Скелет»), в приложенном zip-файле.     Форма и ее элементы управления выглядят так:

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

Давайте начнем писать код

Вставьте эти операторы в начало кода формы:

Option Strict On

Imports System.Drawing.Drawing2D

Imports System.Collections

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

Structure GraphData

Dim Name As String

Dim Amount As Decimal

Dim Clr As Color

Dim Pattern As HatchStyle

End Structure

' Массив для хранения данных, которые вводятся пользователем

Dim UserData As New ArrayList

    Эта структура подобна той, которую мы создавали в Части 1 – первые три поля (Name, Amount и Clr) представляют те же элементы. Дополнительный элемент (Pattern) будет содержать выбранные пользователем HatchStyles (Стили штриховок). Framework предлагает диапазон из более чем 50 стилей – в основном они предлагают выбор цветных штриховок. Картинка ниже показывает несколько типовых образцов:

Временные переменные

    Из того, что мы делали в частях 1 и 2 вы должны знать, что мы будем создавать экземпляры User Defined Value Type (Определенные Пользователем Типы Значений) (GraphData) и будем присваивать значения каждому из четырех полей. В этой версии мы позволим пользователю делать это во время выполнения.     Так же нам нужна пара переменных, которые временно будут содержать значение элементов Цвет (Color) и HatchStyle, пока пользователь будет выбирать остальные значения. Добавьте эти строки в область деклараций, где вы создавали массив:

Dim clrPicked As Drawing.Color = Color.Black

Dim hatchPicked As HatchStyle = HatchStyle.DarkHorizontal

    Вы увидите, что в код включены значения по умолчанию (Black и DarkHorizontal (Черный и Темный горизонтальный)). Это сделано для того, чтобы избежать ошибки, если пользователь забудет выбрать какой-либо из этих элементов.

Элементы пользовательского ввода

TextBox Если игнорировать ярлыки, первым элементом управления на форме будет TextBox. Если вы создаете свой проект, его нужно назвать txtName. NumericUpDown Следующий элемент – NumericUpDown, названный nudValue. Вы можете установить его Min, Max и значение, которое захотите сами. Кнопка «Select Color» Далее на форме находится кнопка. Я назвал ее btnColor, но имя не имеет значения.

ColorDialog

Событие нажатия на кнопку открывает ColorDialog, из которого пользователь может выбрать цвет для штриховки. Добавьте ColorDialog в вашу форму, если это необходимо (он уже включен в предложенный скелетный проект).     Следующий код содержит выбранный пользователем цвет:

Private Sub btnColor_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnColor.Click

' Получает выбранный пользователем цвет

Dim ColorPicker As New ColorDialog

Dim Choice As DialogResult = ColorPicker.ShowDialog

If Choice <> DialogResult.Cancel Then

clrPicked = ColorPicker.Color

End If

End Sub

ComboBox «Select Pattern»

Четвертый элемент пользовательского ввода – ComboBox, который следует назвать cboPattern.

    Этот ComboBox позволяет пользователю выбрать любой HatchStyle для использования в круговой диаграмме. Поэтому мы должны заполнить комбо этим списком. К счастью, VB.NET дает нам крайне легкий способ сделать это.     Поместите этот код в событие Form_Load, чтобы получить названия стилей штриховки и наполнить ими ComboBox:

Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load

' Заполняем combobox всеми доступными HatchStyles

Dim patts() As String

patts = System.Enum.GetNames(GetType(HatchStyle))

cboPattern.Items.AddRange(patts)

End Sub

    Способность получить эти Enumeration (Перечисления) и манипулировать ими, как диапазоном, может быть очень полезной. Альтернативой является ручное добавление каждого значение в код каждой строки с помощью «Items.Add», что не очень привлекательно!     Теперь пользователь может выбрать HatchStyle из ComboBox и когда это происходит, мы записываем выбор пользователя в переменную, которую мы создали для этого раньше, и назвали Hatchpicked. Код в событии комбобокса SelectedIndexChanged выглядит так:

Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, _ ByVal e As System.EventArgs) _ Handles cboPattern.SelectedIndexChanged

hatchPicked = CType(System.Enum.Parse(GetType(HatchStyle), _

cboPattern.Text), HatchStyle)

End Sub

    Фактически этот код проверяет выбор пользователя, который является строковым типом в комбобоксе, находит его соответствие в перечислении HatchStyle и сохраняет его.