171
11. ГРАФИКАЛЫҚ РЕЖИМДЕ ЖҰМЫС ІСТЕУ
С тілінде растрлық графика жҧмыс істейді, оның тақырыптық файлы
graph.h. График нҥктелерден – пиксельдерден тҧрады. Пиксель – экранның
адрестелетін ең кіші элементі. Алдымен, графика шығара алатын бейне-
режимді іске қосу керек. Мҧнда экранның пиксельмен берілген мӛлшері және
тҥстер саны беріледі.
Графикада ҥш координаталық жҥйе: абсолюттік, салыстырмалы және
масштабталған жҥйе қолданылады. Тіке және кӛлденең ӛстер бойынша
пиксельдер саны экран типіне байланысты болады.
Абсолюттік координатада координаталар басы – (0;0) нҥктесі сол жақ
жоғарғы бҧрышта болып саналады, х координатасы солдан оңға қарай, у
координатасы жоғарыдан тӛмен қарай ӛседі.
Салыстырмалы режимде координаталар басы экранның кез келген нҥкте-
сіне ауыстырыла алады.
Масштабталатын режимде экран бетінде масштабталған координаталар
беруге болады, онда х пен у ӛстері бойынша минимум және максимум мәндер
енгізіп, жҧмыс істеуге мҥмкіндік бар.
Жалпы абсолюттік графикалық режимде (11.1 сурет)
әрбір пиксель берілген 16 тҥстің біріне боялады;
(0,0) – экранның сол жақ жоғарғы бҧрышы координатасы;
(639,479) – оң жақ тӛменгі бҧрышының координатасы болады;
әртҥрлі фигураларды экранға шығару ҥшін алдын ала графикалық режимді
іске қосып алу керек.
Жалпы, дисплей адаптерлері графикалық режимде 200, 350, 600 нҥкте-
лерден тҧратын
экран жолдарының әрқайсысында 640, 720, 800 нҥктелер тізбегін бей-
нелей алады. Мҧндағы нҥкте деп отырғанымыз –
кӛлемі 0,8х1 мм
2
шамасында болып
келген (CGA) кішкентай тіктӛртбҧрыш, яғни пиксель.
x
y
(0, 0)
( 0, 479)
(639, 0)
(639, 479)
(320, 240)
11.1-сурет. Экрандағы нҥктелердің координаталары
172
Әрбір нҥктенің координаталары екі бҥтін санмен (х, у) анықталады. Дисплей
экранына график салу ҥшін оның нҥктелерінің координаталарын кӛрсету қажет.
Координаталар басы (0,0) болып экранның сол жақ жоғарғы бҧрышы
есептеледі. Х координаталары (бағаналар немесе позициялар нӛмірлері) солдан
оңға қарай, ал у мәндері (жолдар немесе қатарлар) жоғарыдан тӛмен қарай ӛсіп
отырады. Мысалы, VGA адаптерінің экран бҧрыштарының координаталарын
х=0..799, y=0..599 аралығында кӛрсету қажет. Экранда х ӛсі солдан оңға қарай,
Y ӛсі жоғарыдан тӛмен қарай бағытталған, ал оның шеткі нҥктелерінің
координаталары суретте кӛрсетілген.
Олардың ең жоғарғы мәндері пайдаланылған экран адаптеріне тәуелді
болады, яғни (0,0)..(320х200), (0,0)..(640х480), (0,0)..(800х600) аралықтарында
және т.б. болуы мҥмкін. Сонымен, графикалық режимде экрандағы кез келген
объект кӛрініп тҧрған нҥктелер тобынан тҧрады. Мәтіндік режимнен графика-
лық режимге кӛшкенде экран тазартылады. Графикалық режимде экраннан
курсор кӛрінбейді. Дисплей экранының бетіне (кейін қағазға) нҥкте, тҥзу
немесе қисық сызық, шеңбер, эллипс және кез келген тҧйық сызық сызып
шығаруға болады. Сонымен қатар тҧйық сызықтардың ішін әртҥрлі тҥске бояп
қою мҥмкіндіктері де бар. Сызықтарды жылжыту, айналдыру және басқа орын-
ға кӛшіру арқылы кӛрнекі бейнелер мен мультфильмдер жасауға болады.
График тҧрғызу ҥшін оны шығару немесе бастау нҥктесін кӛрсету қажет.
Мәтіндік режимде ол курсор позициясы болып саналады, ал графикалық ре-
жимде кӛрініп тҧратын курсор жоқ, бірақ экранда кӛрінбейтін курсор тәрізді
сілтеме белгі CP (current poіnter) бар. Негізінде оны да курсор деп қабылдауға
болады.
Графикалық режимдегі жҧмыстарды атқаратын Турбо С нҧсқасында бірсы-
пыра графикалық функциялар бар, енді біз солардың негізгілеріне тоқталып
ӛтеміз.
Графикалық режимде жҧмыс істеу былай басталады:
#include
#include
#include
void main()
{ int gdriver = DETECT; //драйвер
int gmode; //режим аты
int errorcode; // қате коды
initgraph (&gdriver,&mode,“C:\\TC\\bgi\\”);
errorcode = graphresult();
if errorcode != grOk) //іске қосу қатесі
{printf(“Қате: %d\n”, errorcode);
puts("Аяқтау үшін ENTER басыңыз");
getch ();
return;
}
173
... Ары қарай программа мәтіні...
getch();
closegraph ();
}
11.1. Графикалық режим орнату, одан шығу, мәтін жазу,
сызық салу функциялары
Графикалық режим драйверін іске қосу функциясы
initgraph(&Driver, &Mode, Path);
Driver параметрі бейнелік жҥйе драйверін анықтайды, Mode параметрі
бейнелік жҥйе жҧмыс режимін береді, ал Path параметрі драйвер файлының
орнын кӛрсетеді. Кӛбінесе Driver параметрі мәні ретінде detect болатын бҥтін
константа қолданылады. Мҧндайда initgraph функциясының ӛзі графикалық
драйвер типін анықтап, ең дҧрыс режимді таңдап алады. Тақырыптық файлы:
Драйвер дҧрыс оқылған соң, initgraph() функциясы 4К кӛлемінде (келісім
бойынша) ішкі графикалық буфер ҧйымдастырады да, экран тҥсі, сызықтар тҥсі
анықталып, дисплей адаптері графикалық режимге кіреді. Экран тазаланып,
курсор сол жақ жоғарғы бҧрышқа орнатылады.
Егер BGI-файлдар ағымдағы бумада болса, initgraph() функциясының ҥшінші
параметрі ретінде бос орын мәнін беруге болады
initgraph(&Driver, &Mode, " ");
Графикалық режимнен шығу және оған бӛлініп берілген жады бӛлігін
босату ҥшін, яғни бейнеадаптер буферін тазартып, бҧған дейінгі мәтіндік
режимді қалпына келтіру мақсатында мына функция қолданылады
closegraph();
Графикалық режимде сызық тҥстерін, тҧйық сызықтар ішін тҥрлі тҥске бояуға
болады. Ол ҥшін мәтіндік режимдегідей тҥстердің кодтары және олардың ағылшынша
атаулары қолданылады.
Графикалық режимнен уақытша мәтіндік режимге ауысу мақсатында мынадай
функция қарастырылған
restorecrtmode();
Ол initgraph() функциясын пайдаланғанға дейін болған мәтіндік режимді
қайта орнатады, буферде (экран кӛрінісі де) сақталған мәтін қалпына келмейді,
ӛйткені ол initgraph() функциясы арқылы ӛшірілген болатын.
Графикалық режимге қайтып оралу мына функция арқылы атқарылады
setgraphmode(gm);
Функция аргументі ретінде қолданылған драйверге қатысты режимнің бҥтін
сан тҥріндегі нӛмірі қарастырылады.
Курсор орнын анықтау функциялары – getx(); gety();
Функциялары курсор тҧрған орын координаталарын х (у) береді.
maxx(); getmaxy();
Достарыңызбен бөлісу: |