Студопедия

КАТЕГОРИИ:

АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Управление «текущим указателем»




«Текущий указатель» или графический курсор выполняет те же функции, что и курсор в текстовом режиме, однако является невидимым. Положение курсора указывает на начальные координаты изображения графического примитива, выводимого «от текущей позиции». Для перемещения курсора используются процедуры:

MoveTo (x, y : Integer) – перемещает курсор в точку экрана с координатами (x,y);

MoveRel (dx, dy : Integer) – перемещает курсор на dx пикселов по горизонтали и соответственно на dy по вертикали относительно последнего положения курсора. Положительные dx, dy увеличивают координаты курсора, отрицательные – уменьшают.

Для определения текущего положения графического курсора используются функции

GetX : Integer;

GetY : Integer; - возвращают положение указателя соответственно по оси Х и по оси Y.

Рисование графических примитивов и фигур

Линии и их стили

Процедура вывода линии на экран (в текущем цвете и стиле): Line (x1, y1, x2, y2 : Integer). Задаются координаты начала (x1, y1) и конца (x2, y2) линии.

LineTo (x, y : Integer) – рисование отрезка из текущей точки в точку с заданными координатами (x, y).

LineRel (dx, dy : Integer) – рисование отрезка относительно текущей точки. Положение текущего указателя принимается за начало «временных» координат (0, 0) и указывается местоположение конца отрезка в них.

В Паскале можно управлять стилем линий: задавать толщину, тип. Для этого определены следующие типы и константы стилей изображения линий:

Type

  LineSettingType = record

        LineStyle : Word; {стиль линии}

        Pattern   : Word; {шаблон стиля}   

        Thickness : Word;  {толщина}

  End;

Const

  {для значений стиля линии}

  SolidLn = 0; {сплошная}

  DottedLn = 1; {точечная}

  CenterLn = 2; {штрихпунктирная}

  DashedLn = 3; {пунктирная}

  UserBitLn = 4; {тип линии задан явно шаблоном}

  {для значений толщины линии}

  NormWidth = 1; {толщина в один пиксел}

  ThickWidth = 3; {толщина в 3 пиксела}

Для установки параметров линии используется процедура SetLineStyle (LineStyle, Pattern, Thickness : Word).

Окружности, эллипсы и дуги

Для изображения окружности используется процедура

Circle (x, y : Integer; Radius : Word), где (x,y) – координаты центра окружности, Radius – ее радиус.

 

В модуле Graph представлены процедуры рисования эллипсов, дуг и секторов, и процедура, позволяющая рисовать сектор, залитый по заданному шаблону. Все они запрашивают параметры StartAngle и EndAngle, которые обозначают начальный и конечный угол дуги. Положительное направление оси Х принято за 00, отрицательное направление оси Y – за 900, т.е. углы отмеряются от положительного направления оси Х против часовой стрелки. Все значения этих параметров даются в градусах.

Arc( x, y : Integer; StartAngle, EndAngle, Radius : Word) – рисование дуги радиуса Radius из центра с координатами (x, y) от угла StartAngle до EndAngle.

Ellipse (x, y : Integer; StartAngle, EndAngle, RadiusX, RadiusY : Word) – рисование эллиптической дуги с аналогичными параметрами, где RadiusX, RadiusY – размеры горизонтальной и вертикальной полуосей соответственно.

Построение прямоугольников и ломаных

Для построения прямоугольника достаточно вызвать процедуру Rectangle (x1, y1, x2, y2 : Integer), которая изобразит на экране прямоугольник с диагональю (x1, y1) – (x2, y2).

Чтобы построить фигуры с большим количеством вершин (в том числе незамкнутые) используется процедура DrawPoly (NumPoints : Word; var PolyPoints). Она позволяет рисовать любую ломаную, заданную набором координат некоторого множества точек. Параметр NumPoints – это количество точек ломаной (если необходимо нарисовать замкнутый многоугольник с N вершинами, то значение NumPoints должно равняться N+1, а точка N+1 совпадать с 1). Под бестиповым параметром PolyPoints понимается какая-либо переменная, состоящая из наборов двухкомпонентных записей. Поля каждой записи должны содержать координаты X и Y очередной точки.

Заливка областей изображения

Bar (x1, y1, x2, y2 : Integer) – рисует прямоугольник, внутренняя область которого залита по текущему шаблону. Параметры (x1, y1) и (x2, y2) – координаты верхнего левого и правого нижнего углов прямоугольника.

Bar3D (x1, y1, x2, y2 : Integer; D3 : Word; Top : Boolean) – рисует параллелепипед, лицевая сторона заливается по текущему шаблону, а глубина задается в пикселах параметром D3. Параметр Top задает режим отображения верхней плоскости: True – отображать, False – не отображать.

Следующие процедуры работают с секторами окружностей и эллипсов. Рисование эллипса, который будет залит цветом по текущему шаблону, осуществляется процедурой:

Sector (x, y : Integer; StartAngle, EndAngle, XRadius, YRadius : Word). Параметры имеют тот же смысл, что и в процедурах Arc, Ellipse.

FillEllipse (x, y : Integer; XRadius, YRadius : Word) – рисует эллипс текущим цветом и заполняет его по установленному шаблону. Параметры такие, как и в процедуре Ellipse.

FillPoly (NumPoints : Word; var PolyPoints) – заполнение сложных фигур, параметры такие же как и процедуре DrawPoly. Единственное отличие в том, что координаты первой и последней вершины многоугольника могут не совпадать. Однако все равно они будут соединены линией, и внутренность фигуры будет залита.

FloodFill (x, y : Integer; Border : Word) – заливает всю область вокруг точки (x, y), ограниченную линиями цвета Border. Например, если точка (x, y) находится внутри области, ограниченной окружностью, то вся область будет залита по шаблону и цветом, установленными процедурами SetFillPattern или SetFillStyle. Если точка находится за пределами окружности, то залитым будет весь экран за исключением этой области.

Опрос и установка цветов пера и фона

Различные адаптеры поддерживают разное количество цветов, выводимых одновременно на экран в графическом режиме. Но для всех BGI-драйверов оно ограничено в диапазоне 0..15.

На экране всегда различаются цвет фона и цвет пера. Все процедуры изображения фигур, если не содержат в себе явной установки цвета, рисуют эти фигуры цветом пера (как символы в текстовом режиме). Этот цвет устанавливается процедурой SetColor (Color : Word).

Цвет фона – всегда един в поле экрана. Он может быть изменен процедурой SetBkColor(Color : Word).После использования этой процедуры цвет экрана сразу же меняется на заданный.

Для опроса текущих установок цвета предусмотрены функции GetColor : Word и GetBkColor : Word.

GetPixel (x, y : Integer) : Word – возвращает номер цвета пиксела с координатами (x,y).

PutPixel (x, y : Integer; Color : Word) – зажигает на экране в точке с координатами (x, y) пиксел цвета Color.

Вывод текста

В комплектах поставки среды Паскаль присутствуют файлы с расширением chr. Это набор штриховых шрифтов, которые могут быть использованы для вывода информации. Для обозначения шрифтов введены константы:

Const

DefaultFont = 0; {матричный шрифт 8х8 (по умолчанию)}

TriplexFont = 1; {полужирный шрифт}

SmallFont    = 2; {светлый шрифт (тонкое начертание)}

SansSerifFont = 3; {книжная гарнитура (рубленный шрифт)}

GothicFont   = 4; {готический шрифт}

Активизация любого из шрифтов осуществляется процедурой










Последнее изменение этой страницы: 2018-04-12; просмотров: 420.

stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда...