Графиктік фигуралардың түсін орнату үшін SETCОLOR процедурасы қолданылады, процедураның жазылуы:
SETCOLOR(C);
мұндағы: С - палитрадағы түс коды 0-ден 15-ге дейін өзгереді. Бұл процедураның орындалу нәтижесінде графиктік фигуралар С номерлі түске боялып шығады.
Бұл процедурамен орнатылған түс кодының мәнін анықтау үшін GETCOLOR процедурасы қолданылады.
Палитрадағы ең үлкен түстің коды GETMAXCOLOR процедурасымен анықталады. Палитра түстерінің барлық мәндерін GETDEFAULTPALETTE процедурасы арқылы анықтауға болады. Бір мезгілде палитрадағы түс кодтарын өзгерту керек болса, онда SETPALLETE процедурасын қолдану арқылы бірнеше тү.стердің, SETALLPALLETE процедурасымен палитрадағы барлық түстердің орналасуын өзгертіп жаңа палитра алуға болады, мысалы келесі беттегі бағдарламалардың орындалу нәтижесінде экранда Delay функциясымен берілген үзіліс біткенше сары түске боялған тік төртбұрыш көрініп тұрады, кейін тік төртбұрыш көк түске боялады:
Түзу салу үшін LINE процедурасы қолданылады. Сондай-ақ түзу салу үшін LINETO және LINEREL процедуралары да қолданылады. Түзу салу процедураларының жазылуы:
1)LINE(X1, Y1,X2, Y2);
Бұл процедураның орындалу нәтижесінде экранға төбелерінің координаттары Х1,Ү1,Х2,Ү2 болатын түзу салып шығарады.
2)LINETO(X,Y,);
Бұл процедураның орындалу нәтижесінде экранға курсор тұрған жерден бастап координаттары Х,Ү болатын нүктеге дейін түзу салып шығарады.
3)LINEREL(X1,Y1);
Бұл процедураның орындалу нәтижесінде экранға курсор тұрған жерден бастап координаттары курсор тұрған жердің сәйкес координаттарына Х1-мен Ү1-ді қосқандағы шамаға тең болатын нүктеге дейін түзу салып шығарады.
Түзулерді әртүрлі стильдерде шығару үшін SETLINESTYLE процедурасы қолданылады, жазылуы:
SETLINESTYLE(L, P, T);
мұндағы: L - түзустильдері:
L=0 - түзу үздіксіз,
L=1 - нүктелерден құралады,
L-2 - нүктелер мен сызықшадан тұрады,
L=3 - штрихтерден құралады,
L=4 - түзу стилін пайдаланушының өзі анықгайды.
Р - түзу үлгісі, егер түзу стильдері стандартты болса Р=0, түзу стилін пайдаланушының өзі берсе Р=4 деп қабылданады. Т - түзудің қалыңдығы, егер түзу қалыңдығы қалыпты болса, онда Т=7, ал түзу калындығы жуан болса Т=3 деп қабылданады.
SETWRITEMODE(M) процедурасының көмегімен экранда бір-бірімен қиылысатын түзулердің байланысы орнатылады. Егер М параметрі 0-ге тең болса, онда түзулердің қиылысқан жерлері экранға кәдімгі режимде шығып көрініп тұрады. Егер М параметрі 1-ге тең болса, түзулердің қиылысқан жерлері көрінбей тұрады.
Экранда салынған түзу стилі параметрлерінің мәндерін GETLINESETTINGS процедурасының көмегімен текстік режимде шығарып алуға болады, процедураның қолданылу мысалы:
VAR X:Linesettingstype;
........................................
GETLINESETTIGS(X);
With X Do Begin
Writeln( 'Style =', Linestyle);
Writeln(‘Ulgi=', Pattern);
Writeln('Kalyndyk=',Thickness);
End; Readln;
Closegraph END.
Тік төртбұрыш шығару үшін RECTANGLE процедурасы қолданылады, жазылуы:
RECTANGLE(X1, Y1,X2, Ү2);
мұндағы: Х1,Ү1,Х2,Ү2 - тік төртбұрыштың бұрыштарының координаттары.
Бұл процедураның орындалу нәтижесінде экранға сол жақ жоғарғы бұрышының координаттары Х1,Ү1 болатын, ал оң жақ төменгі бұрышы Х2.Ү2 болатын тік төртбұрыш шығады. Бұл процедураның көмегімен салынған тік төртбұрыштың ішінің түсі экранның фонының түсімен бірдей шығады. Мысалы төмендегі бағдарламада биіктіктері кездейсоқ сандар шығаратын функция көмегімен өзгеріп тұратын әртүрлі 12 тік төртбұрыш шығады, егер екінші параметр орнына жыл айларында түскен жауын-шашын мөлшерлерінен тұратын массив болса, онда экранда жыл бойына түскен жауын-шашын диаграммасын алуға болады:
Экранда боялған тік төртбұрыш салу үшін BAR процедурасы қолданылады, жазылуы:
BAR(X1,Y1,X2,Y2);
Бұл процедураның орындалу нәтижесінде экранға сол жақ жоғарғы бұрышының координаттары Х1, Ү1 болатын, ал оң жақ төменгі бұрышы Х2,Ү2 болатын, алдында орнатылған фигураны бояумен толтыру стиліндегі параметрлермен боялған тік төртбұрыш шығады. Егер процедураның алдында толтыру стильдері орнатылмаса, онда тік төртбұрыш экранға ақ түспен шығады.
Фигуралардың ішін бояумен толтыру стилі SETFILLSTYLE поцедурасымен орнатылады, жазылуы:
N=4 - жуан көлбеу сызықтармен толтырылады(//////////),
N=5 - жуан кері көлбеу сызықтарментолтырылады(\\\\\\\),
N=6 - кері көлбеу сызықтармен толтырылады(\\\\\\\),
N=7 - + символдарымен толтырылады(++++++++++),
N=8 - х символдарымен толтырылады(хххххххххх),
N=9 - тік бұрышты торлармен толтырылады,
N=10 - аралары алшақ орналасқан нүктелермен толтырылады,
N=11 - аралары жиі орналасқан нүктелермен толтырылады,
N = 12 болған жағдайда суреттің өрнектерін пайдаланушының өзі SETFILLPATTERN процедурасының көмегімен орнатады, жазылуы:
SETFILLPATTERN(X,C);
мұндағы: С - түс коды,
X – Fillpatter ntype-типті сурет өрнектерін орнататын шама, 8x8 элементтерден тұратын матрица түрінде беріледі. Х-ке 8 байт орны беріледі, әр бит матрицадағы пикселдерді "жандырып" немесе "өшіріп" тұрады. Х шамасы 8 байттан тұратын массив ретінде беріледі:
TYPE Fillpatterntype=Array[1 ..8] Of Byte;
VARX:Fillpatterntype;
Пайдаланушылар орнатқан толтыру стильдері параметрлерін GETFILLPATTERN процедурасымен анықтауға болады, жазылуы:
GETFILLPATTERN(I);
мұндағы: I - элементтері орнатылған стиль параметрлерінен тұратын Fillpatterntype-типті массив. Массив элементтерін графиктік режимнен шығып, экранға цикл арқылы шығаруға болады.
Үш өлшемді боялған тік төртбұрыш(немесе параплелепипед) салу үшін BAR3D процедурасы қолданылады, жазылуы:
BAR3D(X1, Y1,X2, Y2, D, T);
мұндағы:Х1, Ү1 – тік төртбұрыштың солжақ жоғарғы бұрышының координаттары, Х2, Ү2 - тік төртбұрыштың оң жақ, төменгі бұрышының координаттары,
D - үш өлшемді контур тереңдігін көрсететін шама, ішке қарай кіріп тұратын нүктелер санын білдіреді.
Т - бульдік шама, егер Т:=True болса, онда шығатын параллелепипедтің төбесі көрініп тұрады, егер T:=False болса, онда көрінбейді.
D - үш өлшемді контур тереңдігін көрсететін шама, ішке қарай кіріп тұратын нүктелер санын білдіреді.
Т - бульдік шама, егер Т:= True болса, онда шығатын параллелепипедтің төбесі көрініп тұрады, егер T:=False болса, онда көрінбейді.
Rectangle процедурасымен салынған тік төрбүрыштардың немесе кез-келген басқа да шектеулі фигуралардың ішін FLOODFILL процедурасымен бояуға болады, процедураның жазылуы:
FLOODFILL(X,Y,C);
мұндағы: Х,Ү- шектелген фигураның ішінде жататын кез-келген нүктенің координаттары, егер нүкте фигураның сыртында жатса, онда фигураның сырты боялады, егер фигура шектелмеген болса, онда бояу сыртқа шығып экранның барлық ашық жері боялады. С - түс коды.
Көпбұрыштар салу үшін DRAWPOLY процедурасы, ал іші боялған көпбұрыш салу үшін FILLPOLY процедурасы қолданылады. Бұл процедуралар параметрлерінің мәндері бірдей шамалар болады, олардың жазылуы:
DRAWPOLY(N,P);
FILLPOLY(N,P);
мұндағы:
N - көпбұрыштың қабырғаларының қиылысу санын білдіретін бүтін шама,
Р - көпбүрыштың бұрыштарының координаттарын білдіретін Pointtype - типті шама (элеметтерін көп бұрыштың координаттары болып табылатын бүтін сандардан тұратын массив ретінде қарастырса да болады).
Шеңбер салу үшін CIRCLE процедурасы қолданылады, жазылуы:
Доға салу үшін ARC процедурасы қолданылады, жазылуы:
ARC(X,Y,A,B,R);
мұндағы: Х,Ү- шеңбер центрінің координаттары,
A - доғаның бастапқы бұрышы,
В - доғаның соңғы бұрышы,
R – шеңбердің радиусы.
Соңғы салынған доғаның параметрлерін білу үшін GETARCCOORDS процедурасы қолданылады, жазылуы:
GETARCCOORDS(A);
мұндағы: A - соңғы салынған доғаға орнатқан параметрлер мәндерінен тұратын стандартты ArcCoordsType-типті шама.
Эллипс немесе эллипстік доғалар салу үшін ELLIPSE процедурасы қолданылады, жазылуы:
ELLIPSE(X, Y,A, B, Rx, Ry);
мұндағы: Х,Ү - эллипс центрінің координаттары,
А,В - бастапқы және соңғы бұрыштар,
Rx.Ry - эллипстіңХосі және Үосі бойынша радиустары.
Боялған эллипсті алдын-ала Setfillstyle, Setcolor процедураларында бояу стильдерін беріп, FILLELLIPSE процедурасын қолданып салады, жазылуы:
FILLELLIPSE(X, Y, Rx, Ry);
мұндағы: Х,Ү - эллипс центрінің координаттары,
Rx,Ry - эллипстіңХосі және Үосі бойынша радиустары.
Шеңбердің боялған секторын салу үшін PIESLICE процедурасы қолданылады, жазылуы:
PIESLICE(X, Y,A, B, R);
мұндағы:
Х,Ү- шеңбер центрінің координаттары,
А,В – сектордың бастапқы және соңғы бұрыштары,
R – шеңбердің радиусы.
Эллипстің боялған секторын салу үшін SECTOR процедурасы қолданылады, жазылуы:
SECTOR(X, Y,A, B, Rx, Ry);
мұндағы:
X, Ү - эллипс центрінің координаттары,
А,В - сектордың бастапқы және соңғы бурыштары,
Rx.Ry - эллипстіңХосі және Үосі бойынша радиустары.
Секторлар іші алдын-ала Setfillstyle немесе Setfillpattern процедураларында орнатылған стильдермен толтырылып боялады.
12.3.Графиктік режимде текст шығару процедуралары
Графиктік режимде текст шығару үшін OUTT.EXT және OUTTEXTXY процедуралары қолданылады. OUTTEXT процедурасы тексті курсор тұрған жерден бастап шығарады. Сондықтан бұл процедураны қолданғанда алдымен Moveto процедурасымен курсордың тұрған орнын көрсетіп кету керек. Көп жағдайларда бұл процедураны қолданған ыңғайсыз болғандықтан OUTTEXTXY процедурасы қолданылады, процедураның жазылуы:
ОUТТЕХТХҮ(Х, Ү, 'text');
мұндағы: Х,Ү - текст басталатын жердің нүктесінің координаттары.
Graph модулінде сандық шамаларды шығару процедуралары жоқ болғандықтан, графиктік режимде алдымен олар Str процедурасының көмегімен жолдық қатарлы айнымалыларға айналдырып алынады. Сонан соң ол айнымалы OUTTEXTXY процедурасындағы текстің орнына жазылады, немесе процедурада жазылған текспен + (конкатенация) амалының көмегімен біріктіріліп экранға шығарылады, мысал ретінде келесі бағдарламаны қарастыруға болады.
Экранға сандар шығару
PROGRAM Gr10;
USES Graph;
VAR d1,d2,X: Integer; Y:Real; ZString;
BEGIN d1:=Detect; InitGraph(dl, d2, ‘ ‘), Setbkcolor(2);
X:=150; Str(X,Z); Outtextxy( 100,100, ‘X= ‘+Z);
Y:=231.25; Str(Y:4:2,Z);
Outtextxy(100,110,Z);
ReadLn;
CloseGraph; END.
Экранға текстерді әртүрлі стандартты және пайдаланушының өзі орнататын шрифтермен де шығаруға болады, ол үшін SETTEXTSTYLE процедурасы қолданылады, жазылуы:
D - текстіңжазылу бағыты(0 - горизонтальді, 1 – вертикальді быт),
С - символдар өлшемі(1 - биттік, 2 - екі еселенген, т.с.с. 10-ға дейін).
Шрифтің өлшемдерін пайдаланушының өзі SETUSERCHARSIZE процедурасының көмегімен орнатса да болады, жазылуы:
SETUSERCHARSIZE(MX, DX, MY, DY);
мұндағы:
MX, DX, - шрифтің горизонтальді өлшемін анықтайтын параметрлер, MX/DX қатынасының қалыпты жағдайдағы шрифтің еніне көбейтіндісі жаңа шрифінің шамасын береді.
MY, DY - шрифтің вертикальді өлшемін анықгайтын параметрлер,
MY/DY қатынасының қалыпты жағдайдағы шрифтің биіктігіне көбейтіндісі жаңа шрифтің биіктігінің шамасын береді. Бұл шамалардың мәнін: биіктігін ТЕХТНEIGHTжәне енін TEXTWIDTH фунщияларын қолданып есептеуге болады, мысалға:
X:=Textwidth(T);Y:=Textheight(T));
Бір қатарда жазылған символдардың орналасуын өзгерту үшін SETTEXTJUSTIFY процедурасы қолданылады, жазылуы:
SETTEXTJUSTIFY(H, V);
мұндағы:
Н - символдарды горизонтальді бағытта түзеу:
0 - символды солға қарай жылжыту,
1 - орталықгандыру,
2 - оңға қарай жылжыту.
V- символдарды вертикальді бағытта түзеу:
0 - символды төменге қарай жылжыту,
1 - орталықтандыру,
2 - төменге қарай жылжыту.
12.4.Графиктік режимде қателерді өңдеу
Графиктік бағдарлаималардың орындалу барысында басқа бағдарламалардай (мысалы файлдарды енгізу-шығаруда) қателер шығуы мүмкін. Сондықтан графиктік бағдарламалардың дұрыс құрылғандығын тексеру үшін арнаулы GRAPHRESULT және GRAPHERRORMSG функциялары қолданылады. GRAPHRESULT функциясы бағдарламаларда өзінің алдында жазылған оператордың орындалуының дұрыстығын тексеріп, жіберілген қате кодын анықтайды. Бұл функцияның орындалуы файлдардағы IORESULT функциясына үқсайды.
ЕГЕР соңғы графиктік амал дұрыс орындалса онда GRAPHRESULT функциясы 0-ді меншіктейді, ӘЙТПЕСЕ ол жіберілген қате кодтарының нөмірін қабылдайды.
If GraphResult = 0 Then
Begin ... графиктік операторлар ... End
Else Writeln('графиктік режимде қате кетті');
GRAPHERRORMSG функциясының көмегімен бағдарламада жіберілген қате туралы текстік сипаттама шығаруға болады. Бұл функцияның типі жолдық қатар, ал нақты параметрі GRAPHRESULT функциясының мәні болып табылады, мысалы жоғарыдағы фрагментті бағдарламада қате кеткен кезде бірден оның қате туралы хабарымен бірге шығаруға болады: