177
аламыз, оның периоды 16 пиксел болуы тиіс. Егер сызықта жарықтанатын
пиксел керек болса, ҥлгіде 1-ге тең бит, болмаса – 0-ге тең бит алу керек.
Сонымен, obr мәні тӛрт таңбалы оналтылық константа болып, ол ҧзындығы 16
пиксел сызық кесіндісін кодтау ҥлгісі болуы тиіс.
Мысалы, пунктир сызық ҥшін алынған ҥлгі мынадай болуы мҥмкін: 0x3333,
бҧл мынадай биттер тізбегіне сәйкес келеді 0011 0011 0011 0011.
Графикалық режимде экрандағы тҧйық сызық іші белгілі бір тҥспен боялуы
мҥмкін.
Штрихтау сызықтарын тағайындау және тұйық аймақты бояу
функциясы – setfillstyle (stil, col);
аймақты бояу, толтыру стилін береді, мҧндағы stil – алдын ала мәні анықталған
константа, стильді береді, оның мәндері тӛменгі кестеде кӛрсетілген; col – тҥс
кодына сәйкес бҥтін сан немесе ағылшынша тҥс аты; ол setcolor функциясын
анықтауда кӛрсетілген.
Бояу тәсілін анықтайтын stil параметрінің мҥмкін мәндері
EMPTY_FILL
0
аймақты фон тҥсімен толтыру
SOLID_FILL
1
кӛрсетілген тҥспен толтыру
LINE_FШLL
2
кӛлденең штрих сызықтармен толтыру
LTSLASH_FILL 3
45 градус оңға қиғаш жіңішке штрих сызықтармен толтыру
SLASH_FILL
4
45 градус оңға қиғаш қалың штрих сызықтармен толтыру
BKSLASH_FILL 5
45 градус солға қиғаш жіңішке штрих сызықтармен толтыру
LTBKSLASH_FILL 6
45 градус солға қиғаш қалың штрих сызықтармен толтыру
HATCH_FILL
7
торсызықты штрихтармен толтыру
XHATCH_FILL 8
45 градус оңға қиғаш сирек штрих сызықтармен толтыру
INTERLEAVE_FILL 9 45 градус қиғаш жиі штрих тор сызықтармен толтыру
WIDE DOT_FILL 10 сирек нҥктелермен толтыру
CLOSE_DOT_FILL 11 жиі нҥктелермен толтыру
Сызық стилі мен тҥсі кӛптеген функцияларда ( bar, bar3d, sector, т.б.)
қолданылады. Енді бір мысал келтірейік.
// Әртүрлі сызықтар салу мысалы
#include
#include
#include
main()
{
int gdriver=DETECT;
int gmode;
int x, y, xk = 500;
initgraph (&gdriver, &gmode,"C:\\TC\\bgi");
setcolor(RED); x=80; y=30;
moveto(x,y); outtext("жай сызық - SOLID_LINE");
setlinestyle (SOLID_LINE,0,NORM_WIDTH); y+=20;
line(x,y,xk,y);
178
y+=40; moveto(x,y);
outtext("пунктир сызық – DOTTED_LINE");
setlinestyle (DOTTED_LINE,0,NORM_WIDTH);
y+=20; line(x,y,xk,y);
y+=40; moveto(x,y);
outtext("штрих-пунктир сызық – CENTER_LINE");
setlinestyle (CENTER_LINE,0,NORM_WIDTH);
y+=20; line(x,y,xk,y);
y+=40; moveto(x,y);
outtext("штрихі ұзынша пунктир сызық");
setlinestyle (DASHED_LINE,0,NORM_WIDTH);
y+=20; line(x,y,xk,y);
y+=40; moveto(x,y);
outtext("қалың сызық");
setlinestyle (SOLID_LINE,0,THICK_WIDTH);
y+=20; line(x,y,xk,y);
getch();
closegraph();
}
11.3. Тұйық сызықтар салу
Тіктӛрбұрыш контурын салу үшін rectangle(xl,yl,x2,y2);
функцияcы қолданылады, ол сол жақ жоғарғы бҧрышы – x1,y1, оң жақ тӛменгі
бҧрышы - х2,у2 болып келетін тӛртбҧрыш сызады. Сызық типі setlinestyle
функциясымен, ал тҥсі — setcolor функциясымен анықталады.
Іші боялған тіктӛрбұрыш салу үшін
bar(xl,yl, x2,y2);
функциясы пайдаланылады, x1, y1 сол жақ
жоғарғы бҧрыштың, ал х2 , у2 – оң жақ
тӛменгі бҧрыштың координаталары.
Мҧның қабырғалары ӛстерге параллель
болады, контуры кӛрсетілмейді. Оны бояу
стилі setfillstyle() функциясымен анықталады.
Алдыңғы жақ беті боялған
параллелепипед салу функциясы
bar3d(xl,yl, x2,y2, Қалыңдығы, Ж_Беті);
сыртқы контуры сызылған паралелепипед
салады (11.3 сурет), мҧндағы x1,y1 пара-
метрлері сол жақ жоғарғы бҧрыштың, ал
х2,у 2 – оң жақ тӛменгі бҧрыш координа-
талары. Қалыңдығы параметрі – алдыңғы
және артқы жақтарының ара қашықтығы, егер ол 0 болса, онда айналасы сы-
зылған тӛртбҧрыш салынады . Ж_Беті параметрі – жоғарғы жақ шеттерін
сызуды (1 – TOP_ON ) кӛрсетеді. Егер ол 0 (TOP_OFF) болса, сызықтар сызыл-
11.3 сурет. Параллелепипед салу
179
майды (бірінің ҥстіне бірі қойылған бірнеше параллелепипед салу кезінде қажет
болады).
Мысалы, бірінің ҥстіне бірі қойылған бірнеше паралелепипед салу:
setbkcolor (WHITE);
setcolor (GREEN);
bar3d(230, 50, 250, 150, 15, 1);
bar3d(220, 150, 260, 180, 15, 1);
bar3d(300, 150, 340, 180, 15, 0);
bar3d(300, 50, 340, 150, 15, 1);
Кӛпбұрыш салу функциясы
drawpoly(НүктелерСаны, Координаталары);
тҥзу сызықтардан тҧратын тҧйық аймақты кӛпбҧрыш сызады. НүктелерСаны
параметрі кӛпбҧрыш тӛбелері санын, Координаталары параметрі сол тӛбелер
координаталарын жиым элементтері ретінде береді. Жиымның 0-ші және 1-ші
элементтері алғашқы нҥкте координаталары, 2-ші, 3-ші элементтері – екінші
нҥкте координаталары, т.с.с. Енді осы функцияны пайдаланып, алты бҧрыш
салайық.
// кӛпбұрыш салу
#include
#include
#include
main()
{
int gdriver=DETECT;
int gmode;
initgraph (&gdriver, &gmode, "C:\\TC\\bgi");
int x,y,t[14]={ 450, 150, 500, 350, 400, 400, 150,400, 50,150, 250,80, 450,150 };
setcolor(WHITE);
drawpoly(7, t);
settextstyle(3,HORIZ_DIR,1);
outtextxy(458,135,"C(450,150)"); outtextxy(508,335,"D(500,350)");
outtextxy(400,400,"E(400,400)"); outtextxy(150,400,"F(150,400)");
outtextxy(38,138,"A (50,150)"); outtextxy(243,55,"B(250,80)");
getch();
closegraph();
}
Іші боялған кӛпбұрыш салу үшін қолданылатын функция
fillpoly (НүктелерСаны, координаталары);
мҧндағы НүктелерСаны – тӛбелердің саны, координаталары – жиым эле-
менттері тҥрінде берілген тӛбе координаталары. Әрбір тӛбе координатасы екі
бҥтін санмен беріледі. Бҧл функция тӛбелердің алғашқы нҥктесін соңғы
Достарыңызбен бөлісу: |