Koordinatalar sistemasi
(0,0)
(x,y)
X( 640)
Y (480)
x
y
“ Sendvich” prinsipi
Grafik rejimida ishlash
Grafika uchun oyna ochish
Grafika oynasini yopish
C/C++ tilining grafik imkoniyatlarini ishga tushirish uchun quyidagi direktiva ulanishi kerak: # include Matn rejimidan grafik rejimiga o’tish uchun maxsus funksiyadan foydalaniladi: initgraph (&gd, &gm, “ path “); bu erda: gd – drayver nomi gm – rejim nomi path – yo’l Drayverlar .bgi fayllarida saqlanadi. Ko’pincha gd = 0 (yiki gd = DETECT) deb olinadi. Grafik rejimidan yana matn rejimiga o’tish kerak bo’lsa closegraph ( ); funksiyasi ishlatiladi
#include
#include
void main( )
{ int gd=0, gm ;
... // dastur
getch( );
}
initgraph (&gd, &gm, “ c:\bc\bin “);
closegraph();
Grafik dasturning strukturasi
Yopish funksiyasi
Kerakli fayllarni ulash
Grafik rejimini o’rnatish funk.
Ranglar kodi
Kod
|
Nomi
|
0
|
BLACK
|
1
|
BLUE
|
2
|
GREEN
|
3
|
CYAN
|
4
|
RED
|
5
|
MAGENTA
|
6
|
BROWN
|
7
|
LIGHTGRAY
|
Коd
|
Nomi
|
8
|
DARKGRAY
|
9
|
LIGHTBLUE
|
10
|
LIGHTGREEN
|
11
|
LIGHTCYAN
|
12
|
LIGHTRED
|
13
|
LIGHTMAGENTA
|
14
|
YELLOW
|
15
|
WHITE
|
Ranglar politrasi
rang = R + G + B
Red
qizil
0..255
Blue
Ko’k
0..255
Green
yashil
0..255
R = 218 G = 164 B = 32
R = 135 G = 206 B = 250
Ranglar soni qancha?
?
256·256·256 = 16 777 216 (True Color)
Ranglarni boshqarish
Chiziq va matn rangi: set color = rangini o’rnat
setcolor ( 12 );
setcolor ( COLOR(255,255,0) );
Rang to’kish usuli: set fill style = rang to’kish usulini o’rnat
setfillstyle ( usul, rang );
0 – uzluksiz; 1 – uzluksiz; 2 – gorizontal chiziq; 3..6 – turli og’ma chiziqlar;
7..8 – setkali chiziqlar; 9..11 – nuqtali;
Rang №
R
G
B
Nuqta, kesma, siniq chiziq
(x1, y1)
(x2, y2)
setcolor ( 10 );
line(x1, y1, x2, y2);
(x, y)
putpixel (x, y, 9);
(x1, y1)
(x2, y2)
(x3, y3)
(x4, y4)
(x5, y5)
setcolor ( 12 );
moveto (x1, y1); lineto (x2, y2);
lineto (x3, y3);
lineto (x4, y4);
lineto (x5, y5);
Rangi
To’g’ri to’rtburchaklar
(x1, y1)
(x2, y2)
setcolor ( 9 );
rectangle (x1, y1, x2, y2);
(x1, y1)
(x2, y2)
setfillstyle ( 1, 12 );
bar (x1, y1, x2, y2);
(x1, y1)
(x2, y2)
setfillstyle ( 1, 12 );
bar (x1, y1, x2, y2);
setcolor ( 9 );
rectangle (x1, y1, x2, y2);
12-rang
uzluksiz
Aylana, rang to’kish, matn yozish
setcolor (4);
circle ( x, y, R );
setfillstyle ( 1, 11 );
floodfill ( x, y, 0);
(x, y)
(x, y)
R
Chegara rangi nomeri
(x, y)
Eng zo’r dastur
setcolor ( 9 );
outtextxy(10,10,“Eng zo’r dastur”);
Masalan:
(200, 50)
(100, 100)
(300, 200)
setfillstyle (1, 9);
bar (100,100,300,200);
setcolor (13);
rectangle (100,100,300,200);
moveto (100,100);
lineto (200, 50);
lineto (300,100);
setfillstyle (1, 14);
floodfill (200, 75, 13);
setcolor (15);
circle (200, 150,50);
setfillstyle (1, 10);
floodfill (200,150, 15);
setcolor (12);
outtextxy (100, 230, "Sharik's house.");
Sharik's house
(300, 100)
Yana quyidagi funksiyalar ham mavjud: getmaxx - жорий режим ва драйверлар учун горизонтал нуқталар сонини аниқлаш; getmaxy - жорий режим ва драйверлар учун вертикал нуқталар сонини аниқлаш. bar3D (x1, y1, x2, y2, h, top) - параллелопипед чизади. Бу ерда h - параллелопипеднинг узунлиги; top - юқори қисмини чизиш учун керак. Агар topоn - бўлса томи бор, агар topoff - бўлса томи йўк. setbkcolor (R); - Орқа фонга ранг бериш arc (x, y, a, b, r) - ёй чизиш учун. Бу ерда x ва y - марказнинг координаталари, a - бош бурчак, b - охириги бурчак, r - ёй радиуси. Бурчаклар градусда кабул килинади. arc (x, y, a, b, r) - ёй чизиш учун. Бу ерда x ва y - марказнинг координаталари, a - бош бурчак, b - охириги бурчак, r - ёй радиуси. Бурчаклар градусда кабул килинади. ellipse (x, y, a, b, xr, yr) - худди шу тартибда эллипс ёйини чизади. drawpoly (n, p) - купбурчак чизиш учун. Бу ерда n - купбурчакнинг учлари сони; p - Купбурчак учларининг координаталари. fillellipse (x, y, xr, yr) – markazi x va y, xr kenglikda va yr balandlikda ichi bo’yalgan ellips chizish linerel(x, y) – x va y koordinatali nuqtadan avvalgi nuqtagacha kesma chizish Аввал ранг, стили кейин чизмалар курсатилади. Масалан: setfillstyle (1, 2); // 1-стиль ва яшил ранг circle (50, 50, 35); floodfill (50, 50, 4); /*айлана ичига ранг тукиш, буяладиган чегара ранги рангли калам билан бир хил булиши керак*/ 18. setlinestyle (s, a, b) – турли стилдаги чизикларни чизиш учун; Бу ерда s- style номери; a –фойдаланувчи стилини яратиши мумкин булган параметр, одатда а=1 деб олинади; b- чизикнинг калинлигини курсатадиган параметр 0 – оддий чизик; 1,2 ,3 - турли пунктир чизиклар 4 – сийрак нуктали чизик. Grafik rejimida ham turli shriftlardan foydalanib matnlar yozish mumkin. Barcha shriftlar .chr fayllarda saqlanadi. Ular .bgi fayllari bilan bir katalogda saqlanishi kerak. outtextxy (x, y, “matn”); - matnni yozish; settextstyle(sh, n, r); - matn shriftini o’rnatish. Bu erda: sh – shrift nomeri ; n – yonalishi; r – razmeri. Masalan: settextstyle (0, 1, 4); outtextxy (50, 50, “Axborot texnologiyalari”); Masalan: sin(x) funksiyasining grafigini chizuvchi dastur. # include # include # include # include void main( ) { int i, j, gd=0, gm; float x, y; initgraph( &gd, &gm, “ “); setcolor (13); line (320, 20, 320,480); line (20, 240, 640, 240); outtextxy(10, 10, “4.1-lab.ishi. Boboev Umid.”); settextstyle ( 0, 0, 4); outtextxy (20, 20, “y=sin(x) funksiyasi”); x = -10; do { y = sin(x); putpixel (320+10*x, 240 – 5*y, 4); x +=0.001; delay (30); } while (x <=10); getch ( ); closegraph( ); } Masalan: #include #include #include void piyoda(int x,int y,int c) { setcolor(c); line(x*80+30,y*80+30,x*80+25,y*80+50); line(x*80+50,y*80+30,x*80+56,y*80+50); rectangle(x*80+15,y*80+50,x*80+65,y*80+65); circle(x*80+40,y*80+20,15); setfillstyle(1,22-c); floodfill(x*80+40,y*80+15,c); floodfill(x*80+40,y*80+35,c); floodfill(x*80+40,y*80+55,c); } int main(int argc, char *argv[]) { initwindow(641,641,"Shaxmat"); setcolor(15); int i,j,k; int a[8][8]={{1,2,3,4,5,3,2,1},{6,6,6,6,6,6,6,6}, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, {16,16,16,16,16,16,16,16}, {11,12,13,14,15,13,12,11}}; rectangle(0,0,640,640); for (i=0;i<8;i++) for(j=0;j<8;j++) if ((i+j)%2==0) bar(i*80,j*80,i*80+79,j*80+79); for (i=0;i<8;i++) { piyoda(i,1,12); piyoda(i,6,10); }
Do'stlaringiz bilan baham: |