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

Инициирующий код

Поместите этот оператор 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