Графический режим Модуль 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) Разреше- ние Кол-во цветов CGACGAHi640 х 200 EGA EGALo640 x 200 EGAHi640 x VGA VGALo640 x 200 VGAMed640 x 350 VGAHi640 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 code0 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 R x2,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); XR YR (x,y) XR YR (x,y) EA SA
Направление отсчёта углов
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 color SolidFill 1 Uses draw color LineFill fill LtSlashFill 3 /// fill SlashFill 4 /// thick fill BkSlashFill 5 \thick fill LtBkSlashFill 6 \fill HatchFill 7 Light hatch fill XHatchFill 8 Heavy cross hatch InterleaveFill 9 Interleaving line WideDotFill 10 Widely spaced dot CloseDotFill 11 Closely spaced dot UserFill 12 User-defined fill
FloodFill(x,y,b); - закрашивает замкнутую область, ограниченную линией цвета b Заливка замкнутой области (x;y)
Вывод текста OutText(s); - вывод строки S OutTextXY(x,y,s); - вывод строки S по указанным координатам SetTextJustify(h,v); TopTextCenterTextBottomText LeftTextCenterTextRightText
Hello! SetTextJustify(CenterText,CenterText) OutText(x,y,Hello!);
SetTextStyle(font,dir,size); - задает стиль текста Font – гарнитура шрифта Dir – направление (горизонт. или верт.) Size - размер
FontDirection (dir) 0 = System0 = HorizDir 1 = Triplex Font1 = VertDir 2 = 3 = 4 = GothicFont 5 = 6 =
Размер символов, задаваемый пользователем SetUserCharSize(mx,dx,my,dy); w h*my/dy h w*mx/dx
Hello! TextWidth(s) TextHeight(s)
Uses graph; Begin InitGraph(….); … readln; CloseGraph; End.