- •Оглавление
- •Комбинированный урок №17
- •Графические возможности языка Pascal
- •Работа в графическом видеорежиме
- •Инициализация графического режима
- •Управление экраном и окнами
- •Управление цветом и фоном
- •Построение простейших графических изображений Отображение точки
- •Отображение отрезков прямых линий
- •Построение прямоугольников
- •Построение дуг, эллипсов и окружностей
- •Управление курсором
- •Вывод текстовой информации в графическом видеорежиме
- •Алгоритм построения окон и статических объектов в них
- •Реализация имитации движения графических объектов
- •Контрольные вопросы:
Построение прямоугольников
Процедура Rectangle(X1,Y1,X2,Y2:integer); строит изображение прямоугольника на плоскости. Здесь X1,Y1 – координаты левого верхнего угла, X2,Y2 – координаты правого нижнего угла прямоугольника. При этом используется текущий цвет SetColor и стиль линии SetLineStyle. Область внутри прямоугольника не закрашена и совпадает по цвету с фоном.
Процедура Bar(X1,Y1,X2,Y2:integer); позволяет строить более эффектные прямоугольники. Она рисует прямоугольник, внутренняя область которого залита по текущему шаблону. Обычно используется в деловой графике для построения столбиковых диаграмм, а также для “закраски” графического окна, чтобы фон графического окна не сливался с общим фоном экрана.
Рассмотрим, как производить "заливку" замкнутых областей экрана с помощью различных узоров, т.е. как выбрать узор (шаблон) и цвет заполнения фигуры. Комбинацию узор-цвет принято называть стилем заполнения.
Процедура SetFillStyle(<шаблон>:word; <цвет>:word); устанавливает шаблон и цвет заполнения замкнутой фигуры.
Таблица 4. Константы шаблонов закраски
Константа |
Значение |
Описание узора |
EmptyFill SolidFill LineFill LtSlashFill SlashFill BkSlashFill LtBkSlashFill HatchFill XhatchFill InterleaveFill WideDotFill CloseDotFill UserFill |
0 1 2 3 4 5 6 7 8 9 10 11 12 |
Закраска области фоновым цветом Сплошная закраска области текущим цветом Закраска линиями – Закраска линиями /// Закраска жирными линиями /// Закраска жирными линиями \\\ Закраска линиями \\\ Закраска редкой штриховкой Закраска частой штриховкой (в обоих направлениях) Закраска прерывистой линией Закраска линией из редких точек Закраска линией из частых точек Закраска определяемая программистом |
Процедура FloodFill(X,Y:integer; Border:word); заполняет ограниченную область текущим цветом и стилем заполнения (SetFillStyle). Граница закрашиваемой области высвечивается цветом, заданным в Border.
Если точка (X,Y) находится внутри области, то эта область закрашивается, если же она расположена вне области, то заполняется внешняя часть области.
Построение дуг, эллипсов и окружностей
Процедура Arc(X,Y:integer; 1, 2,R:word); строит дугу. Здесь X,Y – центр окружности дуги, 1, 2 – начальный и конечный углы, отсчитываемые от горизонтальной оси против часовой стрелки, R – радиус. Если 1=00, а 2=3600, то вычерчивается полная окружность.
Процедура Ellipse(X,Y:integer; 1,2,Rx,Ry:word); предназначена для построения эллиптических дуг. Здесь X,Y – центр эллипса, 1, 2 – начальный и конечный углы, отсчитываемые от горизонтальной оси против часовой стрелки, Rх и Ry – горизонтальная и вертикальная полуоси. Если 1=00, а 2=3600, то вычерчивается полный эллипс.
Процедура FillEllipse(X,Y:integer; Rx,Ry:word); строит полный закрашенный эллипс.
Процедура Circle(X,Y:integer; R:word); выводит на экран изображение окружности с центром X,Y и радиусом R. Окружность рисуется цветом, заданным SetColor.
Процедура PieSlice(X,Y:integer; 1,2,R:word); выводит на экран изображение закрашенного сектора круга, используя в качестве центра круга точку X,Y, начального угла 1, конечного угла 2 и радиуса R. Контур сектора высвечивается текущим цветом. При заполнении сектора используются шаблон и цвет, установленные процедурой SetFillStyle. Если 1=00, а 2=3600 то на экран выводится закрашенная окружность.
Процедура Sector(X,Y:integer; 1, 2,Rx,Ry:word); строит закрашенный сектор эллипса.