Графический режим Модуль graph
DESCRIPTION
x. (0;0). Графический режим Модуль Graph. Максимальные разрешения: CGA = 640х200 EGA = 640х350 VGA = 640x480. y. В графическом режиме можно задавать цвет каждого пикселя независимо от других. Процедуры и функции модуля Graph. - PowerPoint PPT PresentationTRANSCRIPT
Графический режимМодуль Graph
y
x(0;0)
В графическом режиме можно задавать цвет каждого пикселя независимо от других.
Максимальные разрешения:
CGA = 640х200
EGA = 640х350
VGA = 640x480
Процедуры и функциимодуля Graph
InitGraph(gd, gm, path); - процедура, инициализирующая графический режим работы видеоадаптера
gd: integer – графический драйвер
gm: integer – графический режим
path: string – путь к файлу драйвера
Графические режимы (не все)
Драйвер
(gd)
Режим
(gm)Разреше-
ниеКол-во цветов
CGA CGAHi 640 х 200
EGAEGALo 640 x 200
EGAHi 640 x 350 16
VGA
VGALo 640 x 200
VGAMed 640 x 350
VGAHi 640 x 480
Файлы драйверов
herc.bgi
cga.bgi
egavga.bgi
…
BGI = Borland Graphics Interface
Файлы обычно располагаются в каталоге BGI вместе с файлами графических шрифтов.
Полезные функции
GetMaxX: integer; – возвращает максимальную координату по х
GetMaxY: integer; – возвращает максимальную координату по y
GetMaxY + 1
GetMaxX + 1
Закрытие графического режима
CloseGraph; - процедура закрывает графический режим и переводит видеоадаптер обратно в текстовый режим работы
Пример использованияInitGraph и CloseGraph
const GrPath = ‘c:\bp\bgi’;var gd, gm: integer;begin … { работа в текстовом режиме } gd:=EGA; gm:=EGAHi; InitGraph(gd, gm, GrPath); … { работа в графическом режиме } CloseGraph; … { работа в текстовом режиме }end.
Анализ графических ошибок
GraphResult: integer – функция, возвращающая код последней графической ошибки (0 = нет ошибки)
GraphErrorMsg(code:integer): string – функция, возвращает строку описания ошибки по коду ошибки
Пример инициализации с анализом ошибокconst GrPath = ‘c:\bp\bgi’;var gd, gm, code: integer;begin … gd:=EGA; gm:=EGAHi; InitGraph(gd, gm, path); code:=GraphResult; if code<>0 then begin writeln(‘Произошла графическая ошибка!’); writeln(GraphErrorMsg(code)); writeln(‘Нажмите Enter…’); readln; halt(1); { выход из программы } end; … { работа в графическом режиме } CloseGraph; …end.
Работа с отдельными пикселями
PutPixel(x, y, c); - задаёт цвет (c) пикселя с координатами (x, y)
GetPixel(x,y): integer; - возвращает цвет пикселя с координатами (x, y)
Графические примитивы
x2,y2
x1,y1
Rectangle(x1,y1,x2,y2);
x2,y2
x1,y1
Bar(x1,y1,x2,y2);
Circle(x,y,R);
x,y
Rx2,y2
x1,y1
Line(x1,y1,x2,y2);
Графические примитивы
Arc(x,y,SA,EA,R);
R
(x,y)
SA
EA
PieSlice(x,y,SA,EA,R);
SA EA
Ellipse(x,y,SA,EA,XR,YR); FillEllipse(x,y,XR,YR);
XRYR
(x,y)
(x,y)
XRYR
(x,y)
EASA
Направление отсчёта углов
0180
270
90
SetColor(c); - устанавливает цвет линий
SetLineStyle(s,p,th); - устанавливает стиль линий
• SolidLn 0• DottedLn 1• CenterLn 2• DashedLn 3• UserBitLn 4 (User-defined line style)
• NormWidth 1• ThickWidth 3
ЗаливкаSetFillStyle(p,c); - устанавливает шаблон и цвет
заливки
Constant │ Value │ Meaning═══════════════╪═════════╪═════════════════════════EmptyFill │ 0 │ Uses background colorSolidFill │ 1 │ Uses draw colorLineFill │ 2 │ --- fillLtSlashFill │ 3 │ /// fillSlashFill │ 4 │ /// thick fillBkSlashFill │ 5 │ \thick fillLtBkSlashFill │ 6 │ \fillHatchFill │ 7 │ Light hatch fillXHatchFill │ 8 │ Heavy cross hatchInterleaveFill │ 9 │ Interleaving lineWideDotFill │ 10 │ Widely spaced dotCloseDotFill │ 11 │ Closely spaced dotUserFill │ 12 │ User-defined fill
FloodFill(x,y,b); - закрашивает замкнутую область, ограниченную линией цвета b
Заливка замкнутой области
(x;y)
Вывод текста
OutText(s); - вывод строки S
OutTextXY(x,y,s); - вывод строки S по указанным координатам
SetTextJustify(h,v);
TopText CenterText BottomText
LeftText CenterText RightText
Hello!
SetTextJustify(CenterText,CenterText)OutText(x,y,’Hello!’);
SetTextStyle(font,dir,size); - задает стиль текста
Font – гарнитура шрифта
Dir – направление (горизонт. или верт.)
Size - размер
Font Direction (dir)
0 = System 0 = HorizDir
1 = Triplex Font 1 = VertDir
2 =
3 =
4 = GothicFont
5 =
6 =
Размер символов, задаваемый пользователемSetUserCharSize(mx,dx,my,dy);
w
h*my/dyh
w*mx/dx
Hello!TextWidth(s)
TextHeight(s)
Uses graph;
Begin
InitGraph(….);
…
readln;
CloseGraph;
End.