(параметр Step)
Параметр Step метода Line позволяет задать вторую крайнюю точку линии относительно первой крайней точки, т.е. он задает не координаты точки, а ее расстояние от первой точки линии. Параметр Step задает относительные координаты. Абсолютные и относительные координаты имеют разные точки начала отсчета. Для абсолютных координат точка начала отсчета определяется свойствами ScaleLeft и ScaleTop, а для относительных – отмеряется от текущей позиции, где бы она ни находилась. Ниже приведен оператор, который проводит линию от точки (100,100) на 100 единиц вниз и 200 единиц вправо от начальной точки.
Line (100,100) – (300,200)
Следующая команда проводит линию из той же начальной точки на 200 единиц вниз и 300 единиц вправо.
Line (100,100) – Step (300,200)
Числа после параметра Step определяют не координаты конечной точки, а расстояние от текущей точки. Можно использовать ключевое слово Step и перед первым аргументом метода Line. Тогда начальная точка линии задается относительно текущей точки (CurrentX, CurrentY).
Относительные координаты часто используют для рисования замкнутых фигур, поскольку конечную точку проще задать по ее расстоянию от предыдущей точки.
Рисование прямоугольников
Для рисования прямоугольника в методе Line используется параметр B (Box – прямоугольник). Синтаксис метода в этом случае
Line [Step](X1,Y1) – [Step](X2-Y2),[color], B [F]
Верхний левый угол прямоугольника задан первой парой координат (X 1, Y 1), а нижний правый – (X 2, Y 2).
Например, в следующем примере аргумент color опущен
Line(100,400)-(200,700),,B
Аргумент F используется для заливки прямоугольника. Например:
Line(100,400)-(200,700),,BF
В этом примере мы имеем залитый прямоугольник. Цвет заливки определяется свойством FillColor. Помимо цвета, замкнутые фигуры можно штриховать, устанавливая различные значения свойства FillStyle. По умолчанию замкнутые фигуры прозрачны.
Рисование окружностей
Для рисования кругов, дуг, эллипсов используется метод Circle. Этот метод применяется к тем же объектам, к которым применяются и предыдущие графические методы. Синтаксис метода следующий:
[Object.] Circle[Step](X, У), Radius [, color [, start, end[, aspect ]]]
Имя объекта (Object) может отсутствовать, в этом случае по умолчанию метод Circle используется экранной формой. Смысл параметров метода следующий:
· (X, У) – координаты центра круга или эллипса, который (или часть которого) будет создавать метод Circle на Объекте;
· radius – ее радиус;
· color – цвет, выражение, которое определяется так же, как и для метода Line;
· start – начальный, end – конечный углы дуги или сектора. Углы измеряют в радианах, их значения берутся в интервале от 0 до 2p. Нулевой угол соответствует горизонтальной оси, направленной вправо. Если перед ненулевым значением угла ставится знак «-» (минус), это означает, что будет нарисована не дуга, а сектор (а вовсе не то, что угол отрицательный). При рисовании дуги или сектора движение «пера» происходит всегда против часовой стрелки, от угла start к углу end (даже когда угол end больше угла start). Если изображается полный круг или эллипс, углы, естественно, отсутствуют:
Circle [Step](X,Y), radius, [color], start, end
Circle [Step](X,Y), radius, [color]
· aspect – аргумент, положительное число, большее или меньшее единицы. В первом случае получается эллипс, вытянутый по вертикали, а во втором – вытянутый по горизонтали. Степень вытянутости определяется значением аргумента. Если он отсутствует, по умолчанию изображается круг (окружность).
Circle [Step](X,Y), radius, [color],,,aspect
Упражнение 5.
1.
![]() |
Добавьте новую форму к проекту с именем FrmGr1 и заголовком «Линии, стиль, очистка». На форме установите три элемента управления: две кнопки управления и графическое окно, расположив их, как показано на рис. 17.
2. Значению свойства формы AutoRedraw присвоить значение True. Остальные значения свойств Формы и элементов управления ясны из рисунка.
3. Щелкните дважды по форме и в программное окно формы введите следующий код:
‘Установка пользовательской системы координат
FrmGr1.Scale (10, 10)-(10000, 10000)
‘Задание толщины линии
DrawWidth = 8
‘Рисование красной линии
FrmGr1.Line (10, 1000)-(10000, 1000), RGB(250, 0, 0)
4. Запустите проект. Обратите внимание на толщину линии. Остановите проект и измените значение DrawWidth =5. Запустите проект заново и отметьте, что толщина линии изменилась.
5. Установите проект в режим конструирования и в программном окне PictureBox процедуры Picture1_Click напишите код:
Dim i As Integer
Dim hstep As Single
hstep = Picture1.ScaleHeight / 6
‘Прорисовка линии соответствующего стиля
For i = 1 To 6
Picture1.DrawStyle = i - 1
Picture1.Line (0.1*Picture1.ScaleWidth, hstep*i)-(0.9*Picture1.ScaleWidth,_ hstep*i)
Next i
6. В процедуру Click командной кнопки «Очистка» запишите код очистки графического окна:
Picture1.Cls
7. Запустите проект. Щелкните левой кнопкой мыши в графическом окне. В графическом окне будут нарисованы линии, соответствующие различным значениям свойства DrawStyle. Результат работы приложения представлен на рисунке 18.
8. Нажмите кнопку «Очистка». Графическое окно будет очищено.
9. Перейдите в режим конструирования. В программном окне кнопки «Работа с цветом» запишите код:
Private Sub Command2_Click()
Form2.Show
End Sub
![]() |
10. Добавьте в приложение форму c именем FrmGr 2. Разместите на форме текстовое окно, графическое окно и командную кнопку. Значения свойств формы и элементов, установленных на форме, взять из таблицы:
Свойства\ Эл-ты | FrmGr2 | PictureBox1 | TextBox1 | Command1 |
AutoRedraw | True | True | ||
Caption | Точки, окружности, эллипс, цвет | Очистка | ||
Height | ||||
Left | ||||
Text | ФИО | |||
ScaleMode | ||||
ScaleHeight | ||||
ScaleWidth | ||||
Top | ||||
Width |
11. Откройте кодовое окно формы и запишите код процедуры Form_Click:
Dim r, g, b, x, y, arc2, arc1 As Single
Dim i As Integer
‘ Анимация текстового окна
Text1.Move Text1.Left + 100, Text1.Top + 100
‘Рисование точек разного цвета
For i = 1 To 20000
r = 255 * Rnd
g = 255 * Rnd
b = 255 * Rnd
x = Rnd * ScaleWidth
y = Rnd * ScaleHeight
PSet (x, y), RGB(r, g, b)
Next
‘Рисование сектора
arc2 = 30 * 3.14 / 180
arc1 = 150 * 3.14 / 180
Circle (ScaleWidth/2, ScaleHeight/2),ScaleHeight / 2.5,, -arc1, -arc2
12. В программное окно PictureBox запишите код процедуры Picture1_Click:
Private Sub Picture1_Click()
Randomize Timer
Picture1.Line (0, 0)-(100, 80)
Dim i As Integer
For i = 1 To 1000
Picture1.Line (Picture1.Width/2, Picture1.Height/2)-(Picture1.Width*Rnd,_
Picture1.Height*Rnd), RGB(255*Rnd, 255*Rnd, 255*Rnd)
Next i
Circledemo2
Эллипс
End Sub
Обратите внимание на то, что из этой процедуры вызываются процедуры рисования окружности и эллипса разного цвета, коды которых приводятся ниже:
Public Sub Circledemo2()
Dim r, g, b, x, y, rad As Single
r = 255 * Rnd
g = 255 * Rnd
b = 255 * Rnd
x = ScaleWidth / 2
y = ScaleHeight / 2
rad = (y * 0.9 + 1) * Rnd
Circle (x, y), rad, RGB(r, g, b)
End Sub
Public Sub Эллипс()
FillStyle = 1
Circle (600+8600, 1000+1500), 800 * Rnd, RGB(255 * Rnd, 255 * Rnd,_
255 * Rnd),,, 3 * Rnd
End Sub
13. Запустите приложение. Нажмите кнопку «Работа с цветом». На экране появится форма. Щелкая по графическому окну левой кнопкой мыши, вы будете в графическом окне наблюдать множество цветных линий, на форме формирование окружностей и эллипсов различных размеров и цвета.
14. Неоднократно щелкая по форме левой кнопкой мыши, вы будете наблюдать формирование цветной мозаики из точек и передвижение по форме текстового окна.
15. Напишите процедуру для кнопки «Очистка».
16. Закройте и сохраните приложение. В отчете привести тексты программ всех упражнений с вашими комментариями.