2. 12-Ma’ruza C++ tilining grafik


Download 1.15 Mb.
bet1/4
Sana18.06.2023
Hajmi1.15 Mb.
#1567569
  1   2   3   4
Bog'liq
2.12-Grafika dev (6)

  • 2.12-Ma’ruza
  • C++ tilining grafik
  • imkoniyatlari. Inisializasiyallash.
  • Ekrandan foydalanish. Grafik holat.
  • Funksiya grafiklarini qurish
  • HTTP://ACM.TUIT.UZ/FORUM
  • Koordinatalar sistemasi
  • (0,0)
  • (x,y)
  • X( 640)
  • Y (480)
  • x
  • y
  • http://acm.tuit.uz/forum
  • Grafik rejimida ishlash
  • Grafika uchun oyna ochish
  • http://acm.tuit.uz/forum
  • 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
  • http://acm.tuit.uz/forum

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

  • http://acm.tuit.uz/forum
  • #include
  • #include
  • void main( )
  • { int gd=0, gm ;
  • ... // dastur
  • getch( );
  • }
  • initgraph (&gd, &gm, “ c:\bc\bin “);
  • closegraph();
  • Grafik dasturning strukturasi (Borland C++)
  • Grafik rejimni yopish funksiyasi
  • Grafik rejimni o’rnatish funksiyasi
  • http://acm.tuit.uz/forum
  • #include
  • int main( )
  • {
  • initwindow(640, 480);
  • ... // dastur
  • getch( );
  • closegraph();
  • return 0;
  • }
  • Grafik dasturning strukturasi (Dev-C++)
  • Kerakli fayllarni ulash
  • http://acm.tuit.uz/forum
  • 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 ToolsCompiler 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
  • http://acm.tuit.uz/forum
  • Dev-C++ da grafika va uni sozlash
  • http://acm.tuit.uz/forum
  • 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
  • http://acm.tuit.uz/forum
  • 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)
  • http://acm.tuit.uz/forum
  • 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 – usulsiz; 1 – uzluksiz; 2 – gorizontal chiziq;
  • 3..6 – turli og’ma chiziqlar;
  • 7..8 – setkali chiziqlar; 9..11 – nuqtali;
  • Rang №
  • R
  • G
  • B
  • http://acm.tuit.uz/forum
  • 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
  • http://acm.tuit.uz/forum
  • 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”);
  • http://acm.tuit.uz/forum
  • 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)
  • Topshiriq
  • 1: “Qurbaqa"
  • 2: “Toj"
  • http://acm.tuit.uz/forum
  • Штрихлаш
  • (x1, y1)
  • (x2, y2)
  • N та чизиқ (N=5)
  • h
  • 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
  • x нинг каср қисми ташланиб юборилади
  • x
  • float x, h;
  • !
  • Каср қисмидаги натижа
  • Ранг қандай ўзгартирилади?
  • (x1, y1)
  • (x2, y2)
  • setfillstyle ( 1, c );
  • floodfill( ???, ???, 15 );
  • заливка ранги
  • с ни ўзгартириш: 1, 2, 3, ...
  • x
  • (x-1, y1+1)
  • for (x = x1+h; x <= x2; x += h)
  • {
  • line (x, y1, x, y2);
  • setfillstyle ( 1, );
  • floodfill (x-1, y1+1, 15);
  • }
  • c = 1;
  • c
  • c ++;
  • чегара ранги
  • <=
  • Нимада муаммо бўлиши мумкин?
  • ?
  • Штрихлаш
  • (x1, y1)
  • (x2, y2)
  • (x3, y2)
  • a
  • h
  • (x3+a, y1)
  • 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);
  • x
  • x-a
  • i ++, x += h
  • Плюс ва минуслар?
  • ?
  • Штрихлаш
  • (x1, y1)
  • (x2, y2)
  • hx
  • hy
  • y
  • x
  • y
  • 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. Клавиатурадан айланалар сонини киритиш ва сохаларни турли ранглар билан бўяб фигурани ясаш.
  • Процедуралар
  • Ишлаб чиқиш тартиби:
    • Бир хил ёки ўхшаш харакатларни ажратиш (учта фигура)
    • Уларда умумийлик (ўлчови, форма, бурилиш бурчаги) ва фарқни (координаталар, ранг) топиш
    • Фарқни номаълум ўзгарувчи кўринишида ёзиб олиш, улар процедура
      Download 1.15 Mb.

      Do'stlaringiz bilan baham:
  1   2   3   4




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling