home *** CD-ROM | disk | FTP | other *** search
- Sub DrawPolygon()
- Dim new_Polygon As Shape 'Ссылка на объект-шэйп, представляющий новый полигон.
- Dim line_color as Color 'Цвет полигона.
-
- 'Очистить документ от всех находящихся в нем сейчас шэйпов.
- thisDoc.ActivePage.RemoveAllShapes()
- 'Создаем шэйп, изображающий полигон.
- 'Построение шэйпа происходит между двумя функциями, объявляющими о начале
- 'создания шэйпа (метод BeginShape объекта Page) и о завершении его создания
- '(метод EndShape объекта Page). Ссылка на строящийся объект присваивается
- 'переменной new_Polygon.
- 'Построение объекта происходит на активной странице данного документа thisDoc.ActivePage
- Set new_Polygon = thisDoc.ActivePage.BeginShape()
- new_Polygon.PenWeight = 28
- new_Polygon.PenPattern = 1
- 'Получаем ссылку на объект Color, содержащий информацию о цвете линии Shap'а.
- Set line_color = new_Polygon.PenColor
- 'Устанавливаем цвет линии объекта, используя индексное представление цвета.
- 'После выделения целой части выражения Rnd()* 256, значение будет являться
- 'целым числом в диапазоне от 0 до 255. Однако фактически Int( Rnd()* 256)
- 'имеет тип Double. Неявное преобразование этого выражения к целому типу при
- 'присваивании производится автоматически.
- Randomize
- line_color.Index = Int( Rnd()* 256)
- 'Задаем координаты начала полигона относительно страницы.
- new_Polygon.MoveTo(100, 100)
- 'Задаем координаты конца первого отрезка. Поскольку метод LineTo вызывается для
- 'объекта Shape, координаты являются относительными координатами Shape. Начало
- 'относительной системы координат лежит в первой точке Shape, определенной первым
- 'вызовом MoveTo, то есть (100,100 ).
- new_Polygon.LineTo(500, 500)
- Do
- 'Cтроим новый сегмент от текущей точки, заданной при предыдущем вызове метода
- 'LineTo. Координаты следующей точки выбираются случайным образом.
- 'Все сегменты являются частью единственной геометрии. Эта связность достигается тем,
- 'что все операции построения происходят внутри одной пары функций BeginShape()-EndShape().
- new_Polygon.LineTo(Rnd()*1900,Rnd()*2770)
- 'Цикл построения выполняется до тех пор, пока пользователь не нажмет кнопку Cancel в
- 'ответ на соответствующий вопрос.
- Loop While ( MsgBox("One more segment?", cdbOKCancel) = cdbOK)
- thisDoc.ActivePage.EndShape()
- End Sub
-
-
-