русс | укр

Мови програмуванняВідео уроки php mysqlПаскальСіАсемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование


Linux Unix Алгоритмічні мови Архітектура мікроконтролерів Введення в розробку розподілених інформаційних систем Дискретна математика Інформаційне обслуговування користувачів Інформація та моделювання в управлінні виробництвом Комп'ютерна графіка Лекції


Void main ( )


Дата додавання: 2013-12-23; переглядів: 1907.


Floodfill (x,у, шекара);

Closegraph();

Getch();

Settextstyle(1,0,2);

Pieslice(x,y,0,270,100);

Setfillstyle(1,2);

Pieslice(x,y,270,360,100);

Setfillstyle(1,3);

Setbkcolor(BLUE); setcolor(RED);

Pieslice(200,100,45,90,50);

Setfillstyle(WIDE_DOT_FILL,RED);

Setwritemode(XOR_PUT);

Setcolor(BLACK); setbkcolor(BLUE);

Void main ()

Pieslice(200,100,45,90,50);

Setwritemode (XOR_PUT); setfillstуle (WIDE_DOT_FILL, RED);

Setcolor (BLACK); setbkcolor (BLUE) ;

Fillellipse (х,у, rх,rу);

Circle(320,240,r); ...

Setcolor(RED);

...

Circle(x,y,r);

Closegraph();

Getch();

Settextstyle(3,HORIZ_DIR,1);

Drawpoly(7, t);

Setcolor(WHITE);

150,400, 50,150, 250,80, 450,150};

Int gmode;

Main ()

Bar3d (300, 50, 340, 150, 15, 1);

Bar3d (300, 150, 340, 180, 15, 0);

Bar3d(220,150,260,180,15,1);

Bar3d(230,50,250,150,15,1);

Setcolor (GREEN);

Setbkcolor (WHITE);

Bar(xl,yl, x2,y2);

Rectangle(xl,yl,x2,y2);

Closegraph();

Getch();

Line(x,y,xk,y);

Setlinestyle (SOLID_LINE,0,THICK_WIDTH);

Moveto(x,y);

Line(x,y,xk,y);

Setlinestyle (DASHED_LINE,0,NORM_WIDTH);

Moveto(x,y);

Line(x,y,xk,y);

Setlinestyle (CENTER_LINE,0,NORM_WIDTH);

Moveto(x,y);

Line(x,y,xk,y);

Setlinestyle (DOTTED_LINE,0,NORM_WIDTH);

Line(x,y,xk,y);

Setlinestyle (SOLID_LINE,0,NORM_WIDTH);

Moveto(x,y);

Setcolor(RED);

Int gmode;

Main ()

Setfillstyle (stil,col);

Setlinestyle(tip,obr,tol);

Line(100,170,150,90); line(150,90, 100,10);

Setbkcolor (RED);

Line(100,10, 50,90); line(50,90, 100,170);

Setbkcolor (WHITE); setcolor (GREEN);

Setcolor(RED); lineto(150,90); lineto(100,10);

Moveto(100,10); lineto(50,90); lineto(100,170);

Setcolor (GREEN);

Linerel (dx,dy);

Lineto (x,y);

Line (x1,y1,x2,y2);

Line(200,280,20,100);

Putpixel(200,y, BLUE);

Putpixel(x,100, BLUE);

for (y=100; y<=280;y++)

 

Түрлі сызықтар салу үш функция арқылы орындалады

x1,y1 нүктесінен x2,y2 нүктесіне дейін сызық сызады, бірақ мұнда курсор орны өзгермейді.

 

 

Курсор тұрған нүктеден х,у нүктесіне дейін сызық салады, мұнда курсор бұрынғы орнынан жаңа орынға ауысады.

3)

 

Курсор тұрған х,у нүктесінен х+dx,у+dy нүктесіне дейін сызық салады, яғни сызық координаталары салыстырмалы түрде беріледі. Мұнда да курсор бұрынғы орнынан жаңа орынға ауысады.

Сызықтар осыған дейінгі setcolor() функциясы тағайындаған түспен және setlinestyle() функциясы арқылы орнатылған стильмен сызылады.

Мысалы, ромб сызудың екі тәсілін келтірейік.

1 тәсіл

2 тәсіл

11.2. Сызық стильдерін беру

Геомет­риялық фигуралар сызықтарының қалыңдығы мен түр сипатын беру функциясы

 

сызықтар стилін береді, мұндағы tip – алдын ала анықталған конс­танта, ол сызық ти-пін береді. tol – сызық қалыңдығын анықтай­тын константа (NORM_WIDTH - қалыпты, THICK_WIDTH- қалыңырақ).

Егер программалаушы анықтаған сызық типі қолданыла­тын болса, онда obr мәні төрт таңбалы оналтылық константа болып, ол ұзын­ды­ғы 16 пиксел сызық кесіндісін кодтау үлгісі болуы тиіс.

tipконстантасының мүмкінмәндері (сызықтық элементтер үшін)

 

0 SOLID_LINE (жай сызық

)

1 DOTTED_LINE (пунктир сызық – нүктелерден тұрады

)

2 CENTER_LINE (штрих-пунктир сызық

– нүктелер мен сызықшалардан тұрады)

3 DASHED_LINE (DOTTED_LINEсызығынан ұзыншалау

келген пунктир сызық)

4 USERBIT_LINE (программалаушы анықтаған сызық)

tolқалыңдығы параметрінің мүмкін мәндері

1 NORM_WIDTH (қалыңдығы бір пиксел)

3 THICK_WIDTH (қалыңдығы үш пиксел)

obr параметрі tipконстантасымәндері 4-ке тең болғанда ғана жұмыс істейді (қалған жағдайларда ол қарастырылмайды, сондықтан оны 0 деп алуға болады). Оның көмегімен кез келген периодты түрде қайталанатын сызық түрін бере аламыз, оның периоды 16 пиксел болуы тиіс. Егер сызықта жарықтанатын пиксел керек болса, үлгіде 1-ге тең бит, болмаса – 0-ге тең бит алу керек. Сонымен, obr мәні төрт таңбалы оналтылық константа болып, ол ұзындығы 16 пиксел сызық кесіндісін кодтау үлгісі болуы тиіс.

Мысалы, шаблон для пунктир сызық үшін алынған үлгі мынадай болуы мүмкін: 0x3333, бұл мынадай биттер тізбегіне сәйкес келеді 0011 0011 0011 0011.

Графикалық режимде экрандағы тұйық сызық іші белгілі бір түспен боялуы мүмкін.

Штрихтау сызықтарын тағайындау және тұйық аймақты бояу функциясы

аймақты бояу, толтыру стилін береді, мұндағы stil – алдын ала мәні анық­тал­ған константа, стильді береді, оның мәндері тө­мен­гі кестеде көрсетілген; col – түс кодына сәйкес бүтін сан неме­се ағылшынша түс аты;олsetcolor функциясын анық­тауда көрсетілген.

Бояу тәсілін анықтайтын stil параметрінің мүмкін мәндері

EMPTY_F1LL 0 аймақты фон түсімен толтыру

SOLID_FILL 1 көрсетілген түспен толтыру

 

LINE_F1LL 2 көлденең штрих

сызықтармен толтыру

LTSLASH_FILL 3 45 градус оңға қиғаш жіңішке штрих

сызықтармен толтыру

 

 

SLASH_FILL 4 45 градус оңға қиғаш қалың штрих

сызықтармен толтыру

 

 

BKSLASH_FILL 5 45 градус солға қиғаш жіңішке штрих

сызықтармен толтыру

 

 

LTBKSLASH_FJLL 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 <graphics.h>

#include <conio.h>

#include <stdio.h>

{

int gdriver=DETECT;

int x,y,xk=500;

initgraph (&gdriver,&gmode,"C:\\TC\\bgi");

x=80; y=30;

outtext("жай сызық - SOLID_LINE");

y+=20;

y+=40; moveto(x,y);

outtext("пунктир сызық –

DOTTED_LINE");

y+=20;

y+=40;

outtext("штрих-пунктир сызық – CENTER_LINE");

y+=20;

y+=40;

outtext("штрихі ұзынша пунктир сызық");

y+=20;

 

y+=40;

outtext("қалың сызық");

y+=20;

}

 

11.3. Тұйық сызықтар салу

Тіктөрбұрыш контурын салу үшін төмендегі функция

қолданылады, ол

сол жақ жоғарғы бұрышы - x1,y1, оң жақ төменгі бұрышы - х2,у2 болып келетін төртбұрыш сызады.

Сызық типі setlinestyle функциясымен, ал түсі — setcolor функциясымен анықталады.

Іші боялған тіктөрбұрыш салу үшін

 

 

функциясы пайдаланылады, x1, y1 сол жақ жоғарғы бұрыштың, ал х2 , у2 – оң жақ төменгі бұрыштың координаталары. Мұның қабырғалары өстерге параллель болады, контуры көрсетілмейді. Оны бояу стилі setfillstyle() функциясымен анықталады.

Алдыңғы жақ беті боялған параллелепипед салу функциясы

bar3d(xl,yl, x2,y2, Қалыңдығы, Ж_Беті);

сыртқы контуры сызылған паралелепипед салады,

мұндағы x1,y1 параметрлері сол жақ жоғарғы бұрыштың, ал х2,у2 — оң жақ төменгі бұрыш координаталары. Қалыңдығы параметрі – алдыңғы және артқы жақтарының ара қашықтығы, егер ол 0 болса, онда айналасы сызылған төртбұрыш салынады. Ж_Беті параметрі – жоғарғы жақ шеттерін сызуды (1 – TOP_ON ) көрсетеді. Егер ол 0 (TOP_OFF)

болса, сызықтар сызылмайды (бірінің үстіне бірі қойылған бірнеше паралелепипед салу кезінде қажет болады).

Мысалы, бірінің үстіне бірі қойылған бірнеше паралелепипед салу:

 

 

Көпбұрыш салу функциясы

drawpoly(НүктелерСаны,Координаталары);

түзу сызықтардан тұратын тұйық аймақты көпбұрыш сызады. НүктелерСаны параметрі көпбұрыш төбелері санын, Координаталары параметрісол төбелеркоординаталарын жиым элементтері ретінде бе­р­е­ді. Жиымның 0-ші және 1-ші элементтері алғашқы нүкте координа­та­лары, 2-ші, 3-ші элементтері – екінші нүкте координа­талары, т.с.с. Енді осы функцияны пайдаланып, алты бұрыш салайық.

// көпбұрыш салу

#include <graphics.h>

#include <conio.h>

#include <stdio.h>

{

int gdriver=DETECT;

initgraph (&gdriver,&gmode,"C:\\TC\\bgi");

int x,y,t[14]={450,150, 500,350, 400,400,

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)");

}

 

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

 

fillpoly (НүктелерСаны,координаталары);

мұндағы НүктелерСанытөбелер саны, координаталары –жиым элементтері түрінде берілген төбе координаталары.

Әрбір төбе координатасы екі бүтін санмен бері-леді. Бұл функция төбелердің алғашқы нүктесін соңғы нүктесімен қосып, сызықтарды тұйықтап, ішін бояйды. Сызық типі мен бояу түсі setfillstyle() және setfillpattern() функцияларымен анықталады.

 

 

Шеңбер сызу функциясы

радиусы r (бүтін сан), центрінің координаталары (х, у)болатын шең­бер сызады.

Сызық түсі setcolor () функциясымен беріледі. Мысалы, қызыл түсті 5 шеңбер сызайық:

for (r=5;r<=25; r+=5)

Доға сызу функциясы

 

arc(x,у,БұрышБасы,БұрышСоңы,Радиус);

центрінің координатасы (х, у), радиусы берілген доға сызады. БұрышБасы,БұрышСоңы параметрлері бұрышты градуспен горизонталь х өсінен бастап, сағат тіліне қарсы бағытта береді. Радиуспараметрідоға радиусын бүтін санмен береді. Бұрыштар мәні периодына сәйкес эквивалентті түрде [0..360] интервалындағы мәндерге келтіріледі. Мысалы, arc(х,у,-45,45,r) және arc(х,у,675,-315,r) шеңбердің бір ширегіне сәйкес бір доғаның екі түрде берілуін көрсетеді.

Эллипс доғасын сызу функциясы

ellipse(x,y, БұрышБасы,БұрышСоңы,rх,rу

);

центрінің координаталары (х, у) эллипс немесе эллипс доғасын сызады. БұрышБасы,БұрышСоңыпараметрлері доғаның басы мен соңын градуспен сағат тіліне қарсы береді. rx, ryпараметрлері эллипстің көлденең және тік радиустарын береді. Эллипс өстері

координаталар өстеріне параллель болады.

 

Іші боялған контурлы эллипс салу функциясы

 

мұндағы х, у – центр координаталары;

rх, rу – пикселмен берілген эллипс жарты өстері радиустары.

Эллипс өстері координат өстеріне параллель болады. Эллипс ағымдағы түспен боялып шығады.

 

Іші боялған дөңгелек сектор сызу функциясы

pieslice(x,y,БұрышБасы,БұрышСоңы,Радиус);

радиусы Радиус, центрі (х,у)нүктесіндегі дөңгелек сектор сызады. БұрышБасы, БұрышСоңыпараметрлері шеңбер секторының бастапқы және соңғы бұрыштарын градуспен сағат тіліне қарсы анықтайды. Егер БұрышБасы = 0, ал БұрышСоңы = 360болса, онда pieslice функциясы шеңбер сызып шығады. Бұрыштарды [0..360] шегіне (диапазонына) келтірген соң, сектор мәні кіші бұрыштан мәні үлкен бұрышқа қарай сызылады, сол себепті ОХ өсінің оң жақтағы бағытын кесіп өтетін сектор салуға болмайды. Сектор контуры (доға мен екі радиус) рисуется после закраски сектор боялған соң сызылады, ал сызық типі мен қалыңдығы setlinеstуlе() функциясымен анықталады. Егер контурсыз сектор салу керек болса, мынадай тәсілді пайдалануға болады:

Іші боялған контурлы эллипс секторын салатын функция

 

sector (x,у,бұрыш_басы,

бұрыш_соңы,rх,rу);

Бұл функция pieslice() функциясы тәрізді жұмыс істейді.

// Жазуы бар секторлар sector2.cpp

 

#include <stdio.h>

 

#include <stdlib.h>

 

#include <conio.h>

 

#include <graphics.h>

 

 

{

 

int gd=DETECT,gm,i,x,y;

 

initgraph (&gd,&gm,"c:\\TC\\bgi");

 

 

 

 

 

 

x=getmaxx()/2; y=getmaxy()/2;

 

 

 

 

 

moveto(x-20,y-40); outtext("75%");

 

moveto(x+20,y+20); outtext("25%");

 

 

 

}

 

 

Тұйық сызықпен қоршалған аймақтың ішін бояу функциясы

мұндағы х, у – боялатын аймақ ішіндегі нүкте координатасы.

Тұйық аймақты қоршаған сызық контурында тесік болмауы тиіс, әйтпесе бояу бүкіл экранды сол түске бояп жібере­ді. Контур түсі шекара түсімен бірдей болуы тиіс. Бояу түсі мен типі setfillstyle() функциясымен орнатылады. Енді бір мысал келтірейік.

//боялған шеңберлер, эллипстер салу – kr_krug.cpp

#include <conio.h>

 

#include <stdlib.h>

 

#include <graphics.h>

 

 

{

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 қызыл шеңбер салу


<== попередня лекція | наступна лекція ==>
Компьютер бейнежадына пиксел жазу функциясы | Циклом называется многократное повторение однотипных действий. Телом же цикла будем называть те самые действия, которые нужно многократно повторять.


Онлайн система числення Калькулятор онлайн звичайний Науковий калькулятор онлайн