home *** CD-ROM | disk | FTP | other *** search
- Sub DrawEllipses()
- Dim active_page As Page 'Ссылка на активную страницу текущего документа.
- Dim new_oval As Shape 'Ссылка на объект-шэйп, представляющий новый построенный эллипс.
- 'Координаты, по которым будет строится эллипс.
- Dim x1 as Double
- Dim y1 as Double
- Dim x2 as Double
- Dim y2 as Double
- Dim dAngle as Double 'Угол поворота эллипса.
- Dim fill_color as Color 'Цвет Fill Color эллипса.
- Dim i As Integer 'Счетчик цикла.
-
- 'Получаем ссылку на активную страницу текущего документа. Используем глобальную переменную thisDoc
- 'для доступа к объекту Document.
- Set active_page = thisDoc.ActivePage
- 'Очистить документ от всех находящихся в нем сейчас шэйпов.
- active_page.RemoveAllShapes()
-
- 'Инициализация генератора случайных чисел.
- Randomize
- 'Построение в цикле 15 эллипсов со случайными координатами.
- For i=1 To 15
- 'Инициализация координат, по которым будет строится эллипс.
- '(x1,y1) координата верхнего левого угла, а (x2,y2) нижнего правого угла
- 'прямоугольника, в который вписан эллипс. При этом, вообще говоря, x1 может
- 'быть и больше x2, а y1 может быть больше y1. Инициализация переменных
- 'производится с помощью генератора случайных чисел с использованием функции Rnd()
- x1 = Rnd()*1900+100
- y1 = Rnd()*2770+100
- x2 = Rnd()*1900+100
- y2 = Rnd()*2770+100
- TRACE "pt1=(" & x1 & ";" & y1 & ") " & "pt2=(" & x2 & ";" & y2 & ")"
- 'Инициализация угла поворота эллипса. 0<=dAngle<Pi
- 'Инициализация производится с помощью генератора случайных чисел.
- dAngle = Rnd()* 3.14159265
- 'На активной странице создается объект-эллипс
- 'Ссылка на этот объект присваивается переменной new_oval.
- Set new_oval = active_page.DrawOval(x1,y1,x2,y2)
- 'Получаем ссылку на объект Color, содержащий информацию о цвете fill color эллипса.
- Set fill_color = new_oval.FillColor
- 'Устанавливаем Fill Color объекта, используя индексное представление цвета.
- 'После выделения целой части выражения Rnd()* 256, значение будет являться
- 'целым числом в диапазоне от 0 до 255. Однако фактически Int( Rnd()* 256)
- 'имеет тип Double. Неявное преобразование этого выражения к целому типу при
- 'присваивании производится автоматически. Использование функции приведения CInt()
- 'в данном случае избыточно, однако точнее иллюстрирует суть происходящего.
- fill_color.Index = CInt( Int( Rnd()* 256))
- 'Свойству Angle объекта Shape присваивается новое значение.
- new_oval.Angle = dAngle
- Next
- End Sub
-
-
-