- •Начало работы в среде разработчика FoxPro
- •Константы и переменные
- •Примеры
- •Примеры
- •Примеры
- •Комментарии
- •Процедуры и функции
- •Примеры:
- •Индексы массива
- •Примеры
- •Примеры
- •Примеры
- •2. Считывание информации из файла.
- •3. Перемещение по файлу
- •Примеры
- •Примеры
- •Примеры
- •Примеры
- •Примеры
- •Примеры
- •Задание
- •Примеры
- •Задание
- •Графические функции
- •Шрифтовые свойства
- •Метод line
- •Метод box
- •Метод Circle
- •Функции даты и времени
- •Use [файл | ?] [in рабочаяОбласть] [again] [alias Псевдоним] [exclusive | shared] [noupdate]
- •Добавление и изменение значений полей
- •Относительное перемещение:
- •Контрольные работы
Метод box
Метод Box предназначен для отрисовывания прямоугольников. Существует два способа вызова метода Box (как и у метода Line)
_SCREEN.Box(X1, Y1, X2, Y2) – рисует прямоугольник от точки X1, Y1 до точки X2, Y2
_SCREEN.Box(X, Y) – отрисовывает прямоугольник от текущей точки до точки X, Y
Единицы измерения задаются свойством ScaleMode. По умолчанию ScaleMode = 3, единицы измерения – пиксели (pixel), экранные точки. Второй тип единиц измерения – фоксели (foxel) соответствуют ScaleMode = 0. По величине один фоксель составляет среднюю высоту символа текущего шрифта. Ширина, цвет и стиль линии прямоугольника задаются методами DrawWidth, ForeColor, DrawStyle, заливка определяется свойствами FillStyle, FillColor
В качестве примера приведем программу построения гистограммы по десяти значениям функции f(x) = x^2 для 0< x < 5
_screen.cls
x=-2
X1= 300 + 100*x
Y1= 300 - 100*f(x)
_screen.CurrentX=X1
_screen.CurrentY=Y1
For x= 0 to 5 step 0.5
X1= 300 + 50*x
Y1= 300 - 10*f(x)
_screen.box(X1, 300, X1+20, Y1)
endfor
function f
parameters x
return 8-0.5*(x+0.5)*(x-2)*(x-5.2)
Метод Circle
Метод Circle предназначен для отрисовывания эллипсов и окружностей. Использовать его нужно следующим образом: _scren.Circle (R [, X, Y [, A]]) – здесь R – радиус окружности, X,Y – координаты центра окружности, A – отношение вертикального и горизонтального радиусов эллипса.
_screen.circle(100,100,100) – рисует окружность радиуса 100 точек с центром в точке 100,100.
_screen.circle(100,100,100,2) – отрисовывает эллипс с вертикальным радиусом 100, горизонтальным – в два раза меньшим, чем вертикальный.
Для управления цветом, толшиной и стилем линии отрисовываемой окружности или эллипса используйте свойства ForeColor, DrawWidth, DrawStyle. Для отрисовки заполненных эллипсов или окружностей используйте свойства FillStyle,FillColor.
Управлением стилем и толщиной линии рисования
Для управления толщиной линии рисования применяется свойство DrawWidth
_screen.DrawWidth = 1 задает толщину линии в один пиксель.
_screen.DrawWidth = 3 задает толщину линии в три пикселя.
Вид линии определяется свойством DrawStyle
Основные значения свойства DrawStyle:
Значение |
Описание |
0 |
(по умолчанию) сплошная линия |
1 |
Тире |
2 |
Точки |
3 |
Точка-тире |
4 |
Тире-точка-тире |
Важно заметить, что если толщина линии больше 1, то свойства больше 1 будут давать сплошную линию.
В качестве примера, изобразим пять прямоугольников, отрисованных разными стилями линий:
_screen.cls
_screen.backcolor = rgb(255,255,255)
_screen.fillcolor = 0
_screen.drawwidth = 1
_screen.fillstyle = 1
x=100
For I=0 to 4
_screen.drawstyle = i
_screen.box(x,300,x+50,350)
x=x+50
Endfor
Режим взаимодействия линии и фона задается свойством DrawMode.
Список наиболее часто употребляемых значений свойства DrawMode
Значение |
Описание |
1 |
(Blackness Pen) Рисование черным цветом. |
6 |
(Invert) Обращение цвета BackColor. |
7 |
(XOR Pen) Комбинация цветов ForeColor и BackColor, но не оба цвета |
11 |
(NOP) Нет операции. Выключение рисования. |
13 |
(Copy Pen) Отрисовка производится цветом ForeColor. Эта установка действует по умолчанию |
16 |
(Whiteness Pen) Отрисовка белым цветом. |
Пример использования стиля Invert – DrawMode = 6:
_screen.cls
_screen.fillstyle = 0
_screen.fillcolor=0
_screen.backcolor = rgb(255,0,200)
_screen.drawmode=6
_screen.circle(100,200,200)
В результате выполнения фрагмента на малиновом фоне изобразится круг заполненным зеленым (дополнительным к малиновому) цветом, несмотря на то, что задан черный цвет заполнения.
Пример использования стиля XOR Pen (XOR – исключающее или) – DrawMode = 7:
_screen.cls
_screen.fillstyle = 0
_screen.fillcolor=100
_screen.backcolor = rgb(255,0,200)
_screen.drawmode=7
_screen.circle(90,200,200)
_screen.drawmode=13
_screen.circle(90,400,200)
В данном примере установлены малиновый цвет фона и черный цвет заполнения. Отрисовываются два круга: левый – стилем XOR Pen (он заполнен бледным фиолетовым цветом – дополнительным к комбинации цвета фона и цвета заполнения), правый – стилем Copy Pen (он, естественно, заполнен черным цветом).
Рисование заполненных фигур
Стилем заполнения фигур управляет свойство FillStyle
_SCREEN.FillStyle= N, где число N определяет вид заполнения
Значение |
Описание |
0 |
Сплошное заполнение цветом FillColor. |
1 |
(По умолчанию) Прозрачный стиль. Свойство FillColor игнорируется. |
2 |
Заполнение горизонтальными линиями. |
3 |
Заполнение вертикальными линиями. |
4 |
Диагональ из верхнего левого в нижний правый. |
5 |
Нисходящая диагональ. Диагональ из нижнего левого угла в верхний правый. |
6 |
Заполнение прямым крестом. |
7 |
Заполнение диагональным крестом. |
Например, нарисуем восемь кругов, заполненных зеленым цветом, но разными стилями.
_screen.cls
_screen.backcolor = rgb(255,255,255)
_screen.fillcolor = rgb(0,255,0)
x=100
For I=0 to 7
_screen.fillstyle = i
_screen.circle(50,x,200)
x=x+50
Endfor
Получить цвет данной точки экрана VFP можно при помощи метода Point. Цвет возвращается в виде числа RGB.
Например, нижеприведенный фрагмент кода после выполнения выведет на экран значение цвета в центре красного круга – 255:
_screen.fillcolor=RGB(255,0,0)
_screen.fillstyle=0
_screen.circle(50,100,100)
x = _screen.point(100,100)
_screen.currentx=200
_screen.print(str(x))
