180
нҥктесімен қосып, сызықтарды тҧйықтап, ішін бояйды. Сызық типі мен бояу
тҥсі setfillstyle() және setfillpattern() функцияларымен анықталады.
Шеңбер сызу функциясы
circle(x, y, r);
радиусы r (бҥтін сан), центрінің координаталары (х, у) болатын шеңбер сызады.
Сызық тҥсі setcolor () функциясымен беріледі. Мысалы, қызыл тҥсті 5 шеңбер
сызайық:
БұрышБасы,БұрышСоңы,Радиус);'>...
setcolor(RED);
for(r=5;r<=25; r+=5)
circle(320,240,r); ...
Доға сызу функциясы – arc(x,у,БұрышБасы,БұрышСоңы,Радиус);
центрінің координатасы (х, у), радиусы берілген доға сызады. БұрышБасы,
БұрышСоңы параметрлері бҧрышты градуспен горизонталь х ӛсінен бастап,
сағат тіліне қарсы бағытта береді. Радиус параметрі доға радиусын бҥтін
санмен береді. Бҧрыштар мәні периодына сәйкес эквивалентті тҥрде [0..360]
интервалындағы мәндерге келтіріледі. Мысалы, arc(х,у,-45,45,r) және arc(х,
у, 675, -315,r) шеңбердің бір ширегіне сәйкес бір доғаның екі тҥрде берілуін
кӛрсетеді.
Эллипс доғасын сызу функциясы –
ellipse(x, y, БұрышБасы, БұрышСоңы, rх, rу);
центрінің координаталары (х, у) эллипс немесе эллипс доғасын (11.4 сурет)
сызады. БұрышБасы, БұрышСоңы параметрлері доғаның басы мен соңын
градуспен сағат тіліне қарсы береді. rx, ry параметрлері эллипстің кӛлденең және
тік радиустарын береді. Эллипс ӛстері координаталар ӛстеріне параллель
болады.
Іші боялған контурлы эллипс салу функциясы –
fillellipse (х,у, rх,rу);
мҧндағы х, у – центр координаталары; rх, rу – пикселмен берілген эллипс жар-
ты ӛстері радиустары. Эллипс ӛстері координат ӛстеріне параллель болады.
Эллипс ағымдағы тҥспен боялып шығады.
Iші боялған дӛңгелек сектор сызу функциясы
pieslice(x, y, БұрышБасы, БұрышСоңы, Радиус);
17.4 сурет. Эллипс доғаларын салу
11.4 сурет. Эллипс доғасын салу
181
радиусы Радиус, центрі (х,у) нҥктесіндегі дӛңгелек сектор сызады.
БұрышБасы, БұрышСоңы параметрлері шеңбер секторының бастапқы және
соңғы бҧрыштарын градуспен сағат тіліне қарсы анықтайды. Егер БұрышБасы
= 0, ал БұрышСоңы = 360 болса, онда pieslice функциясы шеңбер сызып
шығады. Бҧрыштарды [0..360] шегіне (диапазонына) келтірген соң, сектор мәні
кіші бҧрыштан мәні ҥлкен бҧрышқа қарай сызылады, сол себепті ОХ ӛсінің оң
жақтағы бағытын кесіп ӛтетін сектор салуға болмайды. Сектор контуры (доға
мен екі радиус) сектор боялған соң сызылады, ал сызық типі мен қалыңдығы
setlinеstуlе() функциясымен анықталады. Егер контурсыз сектор салу керек
болса, мынадай тәсілді пайдалануға болады (11.5 сурет):
setcolor (BLACK); setbkcolor (BLUE) ;
setwritemode (XOR_PUT); setfillstуle (WIDE_DOT_FILL, RED);
pieslice(200,100,45,90,50);
Іші боялған контурлы эллипс секторын салатын функция
sector (x, у, бұрыш_басы, бұрыш_соңы, rх, rу);
Бҧл функция pieslice() функциясы тәрізді жҧмыс істейді.
// Жазуы бар секторлар sector2.cpp
#include
#include
#include
#include
void main()
{
int gd=DETECT, gm, i, x, y;
initgraph (&gd,&gm,"c:\\TC\\bgi");
setcolor(BLACK); setbkcolor(BLUE);
setwritemode(XOR_PUT);
setfillstyle(WIDE_DOT_FILL,RED);
pieslice(200,100,45,90,50);
setbkcolor(BLUE); setcolor(RED);
setfillstyle(1,3);
x=getmaxx()/2; y=getmaxy()/2;
pieslice(x,y,270,360,100);
setfillstyle(1,2);
pieslice(x,y,0,270,100);
11.5 сурет. Секторлар салу
182
settextstyle(1,0,2);
moveto(x-20,y-40); outtext("75%");
moveto(x+20,y+20); outtext("25%");
getch();
closegraph();
}
Тұйық сызықпен қоршалған аймақтың ішін бояу функциясы
floodfill (x,у, шекара);
мҧндағы х, у – боялатын аймақ ішіндегі нҥкте координатасы. Тҧйық аймақты
қоршаған сызық контурында тесік болмауы тиіс, әйтпесе бояу бҥкіл экранды
сол тҥске бояп жібереді. Контур тҥсі шекара тҥсімен бірдей болуы тиіс. Бояу
тҥсі мен типі setfillstyle() функциясымен орнатылады. Енді бір мысал
келтірейік.
//боялған шеңберлер, эллипстер салу – kr_krug.cpp
#include
#include
#include
void main()
{
int gd=DETECT,gm,r,x=120,y=240;
initgraph(&gd, &gm,"C:\\TC\\BGI");
setcolor(RED); //сызықтар қызыл түсті
setbkcolor(BLUE); //фон кӛк түсті
for(r=0; r<80; r++)//концентрлі
circle(x,y,r); //80 қызыл шеңбер салу
setfillstyle(SOLID_FILL,RED);
x+=200; circle(x,y,80); //қызыл шеңбер
floodfill(x,y,RED); // іші де қызыл
x+=200; fillellipse(x,y-150,80,50);//қызыл эллипс
setfillstyle(SOLID_FILL,GREEN);
fillellipse(x,y,80,50); //жасыл эллипс setfillstyle(SOLID_FILL,YELLOW);
fillellipse(x,y+150,80,50); //сары эллипс
getch();
closegraph();
}
Терезе ашу функциясы
Графикалық режимде экран ішінде ӛз координаталық жҥйесі бар тӛртбҧ-
рышты басқа терезені ашуда қолданылатын келесі функция қолданылады:
setviewport (x1, y1, x2, y2, clip);
Мҧндағы x1, y1 – терезенің сол жақ жоғарғы бҧрышы координаталары; x2, у2 –
оң жақ тӛменгі бҧрышының координаталары; clip – қию параметрі.Егер clip
параметрі 1 болса, онда терезеге сыймайтын бейне элементтері қиылып алынып
тасталады; ал егер де ол 0 болса, терезе шекаралары есепке алынбай, бейне
толық экранда кӛрсетіледі. Бҧл функция дҧрыс орындалса, графикалық курсор
терезенің координаталар басына орналасады.
Достарыңызбен бөлісу: |