- 2.12-Ma’ruza
- C++ tilining grafik
- imkoniyatlari. Inisializasiyallash.
- Ekrandan foydalanish. Grafik holat.
- Funksiya grafiklarini qurish
- Grafika uchun oyna ochish
- C/C++ tilining grafik imkoniyatlarini ishga tushirish uchun quyidagi direktiva ulanishi kerak:
- # include
- Matn rejimidan grafik rejimiga o’tish uchun maxsus proseduradan foydalaniladi:
- initgraph (&gd, &gm, “ path “);
- bu erda:
- gd – drayver nomi
- gm – rejim nomi
- path – yo’l
Drayverlar .bgi fayllarida saqlanadi. Ko’pincha gd = 0 (yoki 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 “);
- Grafik dasturning strukturasi (Borland C++)
- Grafik rejimni yopish funksiyasi
- Grafik rejimni o’rnatish funksiyasi
- #include
- int main( )
- {
- initwindow(640, 480);
- ... // dastur
- getch( );
- closegraph();
- return 0;
- }
- Grafik dasturning strukturasi (Dev-C++)
- Dev-C++ da grafika bilan ishlash uchun quyidagi sozlashlarni bajarish lozim:
- graphics.h va libbgi.a (biblioteka) fayllarni yuklab oling.
- 1. graphics.h faylni C:\Dev-Cpp\include papkaga nusxa ko’chiring.
- 2. libbgi.a faylni C:\Dev-Cpp\lib papkaga nusxa ko’chiring.
- Dev-C++ ni ishga tushiring va ToolsCompiler options menyusiga kiring.
- Compiler bo’limiga o’ting va Add these commands to the linker command line ga ptichka qo’ying va uning oynasiga satrni qo’shing
- -lbgi -lgdi32 -lcomdlg32 -luuid -loleaut32 -lole32
- Quyida rasmda ko’rsatilgan:
- Dev-C++ da grafika va uni sozlash
- Dev-C++ da grafika va uni sozlash
- 256·256·256 = 16 777 216 (True Color)
- Chiziq va matn rangi: set color = rangini o’rnat
- setcolor ( COLOR(255,255,0) );
- Rang to’kish usuli: set fill style = rang to’kish usulini o’rnat
- setfillstyle ( usul, rang );
- 0 – usulsiz; 1 – uzluksiz; 2 – gorizontal chiziq;
- 3..6 – turli og’ma chiziqlar;
- 7..8 – setkali chiziqlar; 9..11 – nuqtali;
- Nuqta, kesma, siniq chiziq
- setcolor ( 10 );
- line(x1, y1, x2, y2);
- setcolor ( 12 );
- moveto (x1, y1); lineto (x2, y2);
- lineto (x3, y3);
- lineto (x4, y4);
- lineto (x5, y5);
- setcolor ( 9 );
- rectangle (x1, y1, x2, y2);
- setfillstyle ( 1, 12 );
- bar (x1, y1, x2, y2);
- setfillstyle ( 1, 12 );
- bar (x1, y1, x2, y2);
- setcolor ( 9 );
- rectangle (x1, y1, x2, y2);
- setcolor (4);
- circle ( x, y, R );
- setfillstyle ( 1, 11 );
- floodfill ( x, y, 0);
- setcolor ( 9 );
- outtextxy(10,10,“Eng zo’r dastur”);
- 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.");
- rectangle (x1, y1, x2, y2);
- line( x1+h, y1, x1+h, y2);
- line( x1+2*h, y1, x1+2*h, y2);
- line( x1+3*h, y1, x1+3*h, y2);
- ...
- h = (x2 – x1) / (N + 1.);
- rectangle (x1, y1, x2, y2);
- for (x = x1+h; x < x2; x += h)
- line(x, y1, x, y2);
- x нинг каср қисми ташланиб юборилади
- Ранг қандай ўзгартирилади?
- setfillstyle ( 1, c );
- floodfill( ???, ???, 15 );
- с ни ўзгартириш: 1, 2, 3, ...
- for (x = x1+h; x <= x2; x += h)
- {
- line (x, y1, x, y2);
- setfillstyle ( 1, );
- floodfill (x-1, y1+1, 15);
-
- }
- Нимада муаммо бўлиши мумкин?
- line( x1+h, y1, x1+h-a, y2);
- line( x1+2*h, y1, x1+2*h-a, y2);
- line( x1+3*h, y1, x1+3*h-a, y2);
- ...
- h = (x3 – x2) / (N + 1.);
- a = x2 – x1;
- x = x1 + h;
- for (i = 1; i <= N; i ++, x += h )
- line(x, y1, x-a, y2);
- line( x1, y1+hy, x1+hx, y1+hy) ;
- line( x1, y1+2*hy, x1+2*hx, y1+2*hy);
- line( x1, y1+3*hy, x1+3*hx, y1+3*hy);
- ...
- hx = (x2 – x1) / (N + 1.);
- hy = (y2 – y1) / (N + 1.);
- x = x1 + hx; y = y1 + hy;
- for (i=1; i<=N; i++) {
- line ( x1, y, x, y );
- x += hx; y += hy;
- }
- 3. Клавиатурадан чизиқлар сонини киритиш ва фигурани ясаш:
-
- 4. Клавиатурадан чизиқлар сонини киритиш ва фигурани ясаш:
- 5. Клавиатурадан штрихлаш чизиқлари сонини киритиш ва барча соҳаларини турли ранглар билан бўяб фигурани ясаш.
-
- 6. Клавиатурадан айланалар сонини киритиш ва сохаларни турли ранглар билан бўяб фигурани ясаш.
- Ишлаб чиқиш тартиби:
- Бир хил ёки ўхшаш харакатларни ажратиш (учта фигура)
- Уларда умумийлик (ўлчови, форма, бурилиш бурчаги) ва фарқни (координаталар, ранг) топиш
- Фарқни номаълум ўзгарувчи кўринишида ёзиб олиш, улар процедура
Do'stlaringiz bilan baham: |