Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Работа с графикой в Паскале.doc
Скачиваний:
9
Добавлен:
25.11.2019
Размер:
291.84 Кб
Скачать
  1. Текстовые окна

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

  • Window(X1,Y1,X2,Y2) – процедура установки размера экрана (X1,Y1 – координаты левого верхнего угла, X2,Y2 – правого нижнего угла).

На экране могут находиться несколько окон, но активным в данный момент может быть только одно окно. Процедуры и функции работы с экраном и курсором выполняют соответствующие их назначению действия относительно текущего окна. Закрасить окно цветом, установленным процедурой TextBackGround, можно с помощью процедуры ClrScr.

Пример. На коричневом фоне экрана выделяется пурпурное окно, в котором выводится текст:

TextColor(LightGrey);

TextBackground(Brown);

ClrScr;

TextBackGround(Magenta);

Window(14,12,60,20);

Write(‘Серые буквы на пурпурном фоне в окне);

  1. Задержка изображения на экране

Delay ()

Пример – программа texthello

  1. Символы псевдографики

Символы, отображаемые на экране, соответствуют ASCII-кодам. Таблица ASCII- кодов приведена в Приложении 1.

Для отображения символа, не имеющего клавиши на клавиатуре следует набрать десятичный код символа на цифровой клавиатуре (предварительно установив режим Num) при нажатой клавише Alt.

Первые 32 кода соответствуют символам и управляющим сигналам для клавиатуры или принтера. Для вывода символов, соответствующих этим знакам, можно воспользоваться функцией Chr(), например, команда writeln(chr(03)) выведет на экран символ сердечка

Варианты заданий

Не отображайте курсор на экране, для задержки используйте процедуру Delay из модуля Crt.

  1. Создайте в центре коричневого экрана окно с белой рамкой, цвет окна задается числовым кодом цвета с клавиатуры. При выборе голубого цвета в окне слева направо движется цветная надпись.

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

  3. В центре серого экрана отобразите синее окно с разноцветными мигающими звездочками. При нажатии на клавишу Enter одна из звездочек становится НЛО (используйте псевдографику) и “падает”.

  4. В разных местах экрана появляется “блуждающее” окно, заполненное разноцветными треугольниками (символы псевдографики).

  5. Создайте любую веселую картинку с движущимся текстом или символом с использованием разноцветных окон.

РАБОТА В ГРАФИЧЕСКОМ РЕЖИМЕ

  1. Минимальным объектом в графическом режиме является пиксель – графическая точка. Система координат экрана в графическом режиме представляется растром 640 × 480 пикселей.

Левый верхний угол графического экрана имеет координаты (0,0), соответственно нижний – (639,479). Рисунок формируется из точек растра, для каждой точки задается двоичный код её цвета. Возможна работа не с полным экраном, а с заданным окном (ViewPort). При выводе на экран изображения или отдельной точки можно задать логические операции, выполняемые над двоичными кодами цвета точки.

  1. Для работы с графическими изображениями предназначен модуль Graph, содержащий более 90 процедур и функций.

  2. Р абота программы, использующей графические средства компьютера, начинается с инициализации графического режима InitGraph и завершается процедурой СloseGraph. При инициализации следует указать номер драйвера (программы поддержки работы монитора), режим работы и путь к драйверу. Любая программа работы с графическим режимом имеет вид:

uses Graph;

var

grDriver : Integer; {grDriver, grMode, ErrCode – произвольные

имена переменных}

grMode : Integer;

ErrCode : Integer;

begin

grDriver := Detect;

InitGraph(grDriver, grMode, 'bgi'); {bgi – каталог, в которов расположен

драйвер. Если драйвер находится в текущем

каталоге Паскаля, в кавычки следует

поместить пробел}

ErrCode := GraphResult;

if ErrCode = grOk then

begin { Do graphics }

здесь размещается текст программы работы с графикой

Readln;

CloseGraph;

end

else

Writeln('Graphics error:', GraphErrorMsg(ErrCode));

end.

Переменная ErrCode – сохраняет код ошибки (0..14) инициализации графического режима, полученный функцией GraphResult. Код 0 (обозначается grOK) свидетельствует о безошибочной работе.

Можно оформить инициализацию вызова графического режима по-другому:

uses Graph;

var

Gd : Integer;

Gm : Integer;

begin

Gd := Detect;

InitGraph(Gd, Gm, ' ');

if GraphResult <> grOk then

Halt(1);

здесь размещается текст программы работы с графикой

Readln;

CloseGraph;

end.

  1. Графические константы модуля Graph

  • текстовые и числовые значения констант, определяющих оттенок цвета, приведены в табл.1

  • В табл.2 приведены константы, определяющие стиль линий и закрасок, и константы для вывода текста в графическом режиме.

Таблица 2

Атрибут

Имя константы

Код

Значение

Константы стиля линий и закрасок (для процедур SetLineStyle и SetFillStyle)

Тип линии

SolidLn

0

Сплошная

DottedLn

1

Точечная

CenterLn

2

Штрихпунктирная

DashedLn

3

Пунктирная

UserBitLn

4

Определенная пользователем

Толщина линии

NormWidth

1

Нормальная (1 пиксель)

ThickWidth

3

Жирная (3 пикселя)

Тип закраски

EmptyFill

0

Сплошное заполнение цветом фона

SolidFill

1

Сплошное заполнение заданным цветом

LineFill

2

Заполнение горизонтальными линиями

LtSlashFill

3

Диагональное заполнение (///)

SlashFill

4

Диагональное заполнение толстыми линиями(///)

BkSlashFill

5

Обратное диагональное заполнение толстыми линиями (\\\)

LtBkSlashFill

6

Обратное диагональное заполнение (\\\)

HatchFill

7

Клетчатое заполнение

XhatсhFill

8

Косое клетчатое заполнение

InterleaveFill

9

Чередующееся линейное заполнение

WideDotFill

10

Редко расположенные точки

CloseDotFill

11

Часто расположенные точки

UserFill

12

Стиль определен пользователем

Константы работы с текстом (для процедур SetTextStyle и SetTextJustify)

Тип векторного шрифта

TriplexFont

1

Шрифт из файла trip.chr

SmallFont

2

Шрифт из файла litt.chr

SansSerifFont

3

Шрифт из файла sans.chr

GothicFont

4

Шрифт из файла goth.chr

Горизонтальное выравнивание текста

LeftText

0

Влево

CenterText

1

По центру

RightText

2

Вправо

Вертикальное выравнивание текста

BottomText

0

Вниз

CenterText

1

По центру

TopText

2

Вверх

Направление текста

HorizDir

Горизонтальное

VertDir

Вертикальное

Константы вывода точки на экран (для процедуры PutImage)

NormalPut (0)

0

Обычный вывод

XOR Put

1

Вывод с выполнением операции “исключающее или”

OrPut

2

Вывод с выполнением операции ИЛИ

AndPut

Вывод с выполнением операции И

NotPut

4

Вывод с выполнением инверсии;

  1. Процедуры и функции модуля Graph

Наименование

Значение

Комментарий

Графические примитивы

Arc

Дуга

Bar

Сплошной брус

Bar3D

Трехмерный брус

Circle

Окружность

DrawPoly

Контур из линий

Ellipse

Эллипс

FillEllipse

Заполненный эллипс

FillPoly

Заполненный многоугольник

Line

Линия (от точки к точке)

LineRel

Линия (от указателя к точке в приращениях)

LineTo

Линия (от указателя к точке в координатах)

PieSlice

Заполненный сектор

Rectangle

Прямоугольник

Sector

Заполненный эллиптический сектор

Работа с курсором, координатами и отдельными точками

GetArcCoord

Выдача координат последней дуги

GetAspectRatio

Выдача коэффициента разрешения по осям

GetMaxX

Выдача разрешающей способности по Х

GetMaxY

Выдача разрешающей способности по Y

GetX

Выдача координаты Х курсора

GetY

Выдача координаты Y курсора

GetPixel

Выдача цвета пикселя

PutPixel (X,Y: integer; color: word)

Установка пикселя в заданную точку

процедура выводит в (X,Y) точку, цвет которой определяется параметром color (см. константы цвета);

MoveRel

MoveTo

PutPixel

SetAspectRatio

Работа с цветовой гаммой

FloodFill

Заполнение области

GetBcColor

GetColor

GetDefaultPalette

GetFillPattern

GetFillSetting

GetMaxColor

GetPalette

GetPaletteSize

SetAllPalette

SetBkColor

Установка текущего фонового цвета

SetСоlor

Установка текущего цвета

SetFillPattern

Установка шаблона заполнения

SetFillStyle

Установка шаблона заполнения и цвета

SetPalette

Изменение одного цвета в палитре

SetRGBPalette

Модификация входов палитры для VGA

Работа с текстом

GetTextSetting

Выдача текущих параметров шрифта

InstallUserFont

Установка шрифта пользователя

Устанавливается шрифт, не предусмотренный в среде Турбо Паскаль

OutText

Выдача строки в выходное устройство

OutTextXY

SetTextStyle

Установка текущего шрифта, стиля и размера

SetUserCharSize

TextHeight

TextWidth

Работа с размерами и типами линий

GetLineSetting

Выдача текущего стиля линии

SetLineStyle

Установка текущей ширины и типа линии

SetWriteMode

Установка режима вывода рисунка

Работа с выдачей в окна на экране и страницы в памяти

ClearDevice

Очистка текущего устройства вывода

ClearViewPort

Очистка текущего окна

GetImage (X1,Y1,X2,Y2:word;Var BitMap)

Сохранение битового образа в памяти

процедура сохраняет в буфере двоичный образ заданной области экрана. X1,Y1,X2,Y2 определяют прямоугольную область экрана. Параметр BitMap является нетипизированным параметром, который должен быть больше или равен 6 плюс размер памяти, отведенный для области экрана.

GetViewSettings (var ViewPort: ViewPortType)

Выдача параметров текущего окна и отсечение

процедура возвращает информацию о текущей области просмотра, содержащуюся в переменной ViewPortType.

ImageSize(X1,Y1,X2,Y2:word): word

Выдача числа байтов для запоминания области

функция возвращает число байтов, необходимых для сохранения прямоугольной области экрана. X1, X2, Y1, Y2 – границы прямоугольной области

PutImage (X,Y: word; var BitMap; BitBlt: word)

Вывод битового образа

Процедура выводит из буфера на экран двоичный образ заданной области памяти. Точка c координатами (X,Y) определяет верхний левый угол прямоугольной области экрана. Параметр BitMap определяет ширину и высоту области памяти. Параметр BinBlt определяет тип двоичной операции, используемой для вывода двоичного образа области на экран

SetActivPage

SetVisualPage

SetGraphBufSize

SetViewPort (X1,Y1,X2,Y2 : word, Clip : boolean)

процедура устанавливает для графического вывода текущую область просмотра или окно. (X1,Y1) – верхний левый угол области просмотра. Помещает текущий указатель курсора в точку с координатами (0,0). Clip указывает установлен (True) или не установлен (False) режим отсечения выводимого изображения

Работа с драйверами, режимами

CloseGraph

Завершение работы в графическом режиме

DetectGraph

Определение драйвера

GetDriveName

Выдача имени текущего драйвера

GetGraphMode

Выдача текущего режима

GetMaxMode

Выдача максимального номера режима

GetModeName

Выдача имени графического режима

GetModeRange

GraphDefaults

Восстановление графической системы с параметрами по умолчанию

GraphErrorMsg

GraphResult

InitGraph

Инициализация графической системы

InstallUserDriver

RegisterBGIDriver

RestoreCRTMode

SetGraphMode

Установка системы в графический режим и очистка экрана