Использование относительных координат




(параметр 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. Закройте и сохраните приложение. В отчете привести тексты программ всех упражнений с вашими комментариями.

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2016-07-22 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: