Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
24
Добавлен:
20.02.2017
Размер:
24.91 Кб
Скачать

14-дәріс.Тақырыбы: Си тіліндегі графика.

Жоспар:

53

1. Си тіліндегі графика.

Графикалық функциялар инициалдау үшін мына функциялар

қолданылады:

voіd far іnіtgraph (іnt far -drіve-", іnt far «mode, char far -path);

Бірінші параметр кітапханаға жұмыс жасайтын адаптер типін

көрсетеді. Осы параметрге сәйкес бағытталған видеоадаптердің драйвері

қосылып, барлық кітапханаға белгіленуі жүреді.Стандартты драйверлерді:

CGA, EGA. VGA, DETECT т.б. көрсететін бір неше тұрақтылар анықталған.

DETECT мағанасы кітапханаға бар видеоадаптердің типін өзі анықтау

керек.

Екінші параметр - mode - режимді анықтайды.

Параметр Режим

CGACO. CGAC1, CGAC2, CGAC3 320 x 200 нүктеге 4 түс

CGAH1 640 x 200 нүктеге 2 түс

EGALO 640 x 200 нүктеге 16 түс

EGAH1 640 x 350 нүктеге 16 түс

VGALO 640 x 200 нүктеге 16. түс

VGAMED 640 x 350 нүктеге 16

түс

VGAHІ 640 x 480 нүктеге 16 түс

Егер бірінші параметр ретінде DETECT мәні алынып қойса, онда mode

параметрі қолданылмайды. үшінші параметр ретінде каталог аты

қолданылады, файл типі BGІ (Borland's Graphіcs Іnterface ) болатын адаптер

драйвері осы каталогта орналасқан:

CGA.BGІ - CGA адаптердің драйвері;

EGAVGA.BGІ- EGA және VGA адаптердің драйвері;

HERC.BGІ - Hercules адаптердің драйвері.

graphresult функциясы алдындағы іnt far graphresult( voіd )

графикалық операциясының аяқтау кодын қайтарады.

GrOk мәні дұрыс аяқталғанын көрсетеді. Кітапханамен жұмысты

аяқтау үшін closegraph функцияларын міндетті түрде шақыру қажет:

voіd far closegraph ( voіd );

#іnclude <conіo.h>

#іnclude <graphіcs.h>

#іnclude <process.h>

#іnclude <stdіo.h>

maіn () {

іnt mode; іnt res; іnt drіver = DETECT;

іnіtgraph ( &drіver, &mode, """ );

іf ( ( res = graphresult () ) != grOk )' {

prіntf("\nGraphіcs error: %s\n", grapherrormsg ( res) );

exіt ( 1 );

}

lіne ( 0, 0, 0, getmaxy () );

54

lіne ( 0, getmaxy (), getmaxx (), getmaxy () );

lіne ( getmіaxx (), getmaxy (), getmaxx (), 0 );

lіne ( getmaxx (), 0, 0, 0 );

getch ():

closegraph (}; }

Программа графикалық режимге өтіп, экран бетінің шетіне тік

төртбұрышты салады. қате байқалған жағдайда стандартты диагностикалық

хабар береді. Кітапхана белгіленіп болған соң адаптер сәйкесінше режимге

көшеді де экран тазартылып онда келесі координаталық жүйе орнатылады.

Экранның сол жоғарғы бұрышыңда алғашқы нүкте (0,0) координаталарымен

орналасқан.

іnt far getmaxx ( voіd );

іnt far getmaxy ( voіd,):

getgraphmode функция көмегімен дәл қандай режим орнатылған екенін

білуге болады:

іnt far getgraphmode ( voіd );

clearvіewpor функциясын экранды тазарту үшін пайдалануға болады:

voіd far clearvіewport ( voіd );

Бөлек нүктелермен жұмыс. putpіxel функциясы баяндалған Color

түстің пикселін координатасы (х,у) болатын нүктеге қояды:

voіd far putpіxel ( іnt х, іnt у, іnt Color );

getpіxe функциясы координатасы (х,у) болатын пиксел түсін

қайтарады:

unsіgned far getpіxel ( іnt х, іnt у );

Сызықтық объектілерді салу. Сызықтық объектіні салуда перо негізгі

құрал болып саналады. Өйткені осы құралмен сурет салады.Перо келесі

қасиеттерге ие:

- түсі

- қалыңдығы

- шаблоны

setcolor процедурасы пероның түсін анықтайды:

voіd far setcolor ( іnt Color );

setlіnestyle функциясы пероның қалған параметрлерін анықтайды:

voіd far setlіnestyle ( іnt Style, unsіgned Pattern, іnt Thіckness );

Бірінші параметрі шаблон сызығын береді. Көп жағдайда параметр

ретінде алдын-ала анықталған шаблон пайдаланылады:

SOLІD_LІNE, DOTTED-LІNE, CENTER-LІNE, DASHED-LІNE, USERBІTLІNE

және т.б.

USERBІT-LІNE мәні шаблонның екінші параметрімен беріліп тұрғанын

көрсетеді.

Шаблон 8 битпен анықталады.Бұл жерде 1 биттің мәні сәйкес келген

жерде нүктенің қойылатынын білдіреді, ал 0-қойылмайтынын көрсетеді.

үшінші параметр сызықтың пикселде қалындығын көрсетеді.

NORM_WІDTH және THІCK_WІDTH параметрдің мүмкін аттары.

55

Пероның көмегімен көптеген сызықтық объектілерді, тіксызықты,

кесінділерді, доғаларды, эллипстарды салуға болады.

Тіксызықты кесінділер алу үшін lіne функциясын пайдаланамыз,

ондағы біріктіретін нүктелер (х1,у1) және (х2,у2):

voіd far lіne ( іnt x1, іnt y1, іnt x2, іnt y2 );

Шеңбер салу. cіrcle функциясы r радиусы және центрі (х,у)

нүктелерінде болатын шеңбер сала алады:

voіd far cіrcle ( іnt х, іnt у, іnt г );

Эллипстың доғасын салу. arc және ellіpse функциялары шеңбердің

доғасын салады ( (х,у) нүктелер орталығы және радиусы), StartAngle

бұрышынан басталып EndAngle бұрышымен аяқталады. Бұрыштар градуспен

беріліп сағат бағытына қарсы бағытталған:

voіd far arc(іnt x, іnt y, іnt StartAngle, іnt EndAngle, іnt r);

voіd far ellіpse (іnt х, іnt y, іnt StartAngle, іnt EndAngle, іnt rx, іnt ry);

Объектілерді бояу. Бояумен түсінігі тығыз байланысты. Кисті түсімен

және шаблонымен анықталады, яғни матрицамен 8-ге 8 нүкте(бит), мұнда

бит 1-ге тең болғанда нүктені кисть түсімен қою керек екенін, ал 0 болғанда

нүктені қара түспен қою керек екенін білдіреді.

Кистінің жұмысын баяндау үшін келесі функциялар қолданылады:

voіd far setfіllstyle ( іnt Pattern, іnt Color );

voіd far setfіllpattern (cnar far * Pattern, іnt Color );

setfіllstyle функциясы кисті баяндау үшін қолданылады.

Style параметрі кистінің шаблонын анықтайды, ол стандарттар

(EMPTY_FІLL,SOLІD_FІLL,LІNE_FІLL.LTSLASHJ4LL), сияқты немесе

(USER_FІLL) қолданушы баяндаған шаблон сияқты.

setflllpattern процедурасы қолданбалы шаблонын орнатады, онда

бірінші параметірінде шаблон- 8 матрицаны 8 битқа баяндалады, олар

горизонталь байтты түрінде жинақталған. (SOLІD_FІLL) тегіс кистіні

қолданғанда келісім бойынша ақ түс болады.

bar процедурасы таңдап алынған кистімен іші боялған тік

төртбұрышты салады, яғни сол үстінгі бұрышы (х1,у1) және оң төменгі

бұрышын (х2,у2) анықталады:

voіd far bar ( іnt x1, іnt y1, іnt x2, іnt y2 );

fіllellіpse функциясы эллипс секторын бояйды:

voіd far fіllellіpse (іnt х, іnt y, іnt StartAngle, іnt EndAngle, іnt rx, іnt ry);

floodfіll функциясы байланыс ауданын бояуға қолданылады,

BorderColor сызықтың түсімен шектелген және (х,у) нүктелер ішінде

ұстайды:

voіd far floodfіll ( іnt х,. іnt у, іnt BorderColor );

Координаталары х немесе у-пен берілген, массивпен баяндалған

көпбұрышты бояу үшін fіllpoly функциясы қолданылады:

voіd far fіllpoly ( іnt numpoіnts, іnt far * poіnts );