Grafik rejida ekran bilan ishlash




Download 47.9 Kb.
bet4/8
Sana08.04.2023
Hajmi47.9 Kb.
#49682
1   2   3   4   5   6   7   8
Bog'liq
Xakimova Gulchiroy
893429, Ijtimoiy pedagogik texnalogiyasi strukturasi va mazmuni, Sheriyatda petik uslub va ijodiy individuallik, TOʻPLAMLAR USTIDA AMALLAR, SHAXSIY ISH REJA yangi. X. Maxmudov (3), 1-Internet ma`lum, Mustaqillik yillarida ijrochilik (1), АндДУ 1-сонли баён ижроси, Ochiq dars 2021 Pilla chuvish sexida hosil boladigan chiqindilar, 1.Ахборот ва унинг ахамияти, АСТРОФИЗИКА, Kurs ishi titul yangi, Turgunova Madina, Raximova Sanobar
2. Grafik rejida ekran bilan ishlash
Grafik biblioteka. Turbo C va Borland C++ kompilyatorlarida grafik biblioteka bilan bog‘lanish uchun graphic.h – sarlavxali fayl qo‘llaniladi.
Bu bibliotekaga kiruvchi ba’zi grafik funktsiyalar:
void initgraph(int* graphdriver, int* graphmode, char* pathtodriver)- grafik rejimga o‘tkazish
void closegraph(void)-grafik rejimdan matnli rejimga o‘tkazish.
void putpixel(int x, int y, int color) - Ekranda color rangli (x,y)kordinatali nuqtani tasvirlaydi.
void line (int x1, int y1, int x2, int y2) - Ekranda chiziq chizadi chizadi.
void rectangle (int left, int top, int right, int bottom)- Ekranda to‘rtburchak chizadi.
void circle (int x, int y; int radius) - Ekranda aylana chizadi.
void ellipse (int x, int y, int stangle, int endangle, int xradius, int yradius)- Ekranda ellips chizadi.
void outtextxy (int x, int y, char* textstring) – Textni berilgan pozitsiyada chiqaradi.
void outtext (char* textstring) – Textni joriy pozitsiyada chiqaradi.
int getbcolor(void)- Fon rangini qaytaradi
int getcolor(void)- Tasvir rangini qaytaradi.
void getimage (int left, int top, int right, int bottom, void* bitmap) -ekran oynasini xotirada saqlash;
putimage (int left, int top, void* bitmap, int op)- xotirada saqlangan tasvirni ekranga joylash;
Grafik sinfga misol. Misol tariqasida nuqta tushunchasini aniqlovchi pointsinfini yaratib point.cppfayliga yozib qo‘yamiz:
#ifndef POINTH
#define POINTH 1
class point
{
protected:
int x,y;
public:
point ( int xi=0, int yi=0);
int& givex(void);
int& givey (void);
void show(void);
void move(int xn=0, int yn=0);
private:
void hide();
}
#endif
Kelgusida point sinfini boshqa sinflarga qo‘shish mumkin bo‘lgani uchun shartli protsessor direktivasi #ifndef POINTH ishlatilgan.
Protsessorli identifikator POINTH #define POINT 1 direktivasi orqali kiritilgan.
SHuning uchun #include "point.h" direktivasi bir necha marta ishlatilganda xam POINT sinfi ta’rifi teksti faqat bir marta kompilyatsiya kilinaetgan faylda paydo bo‘ladi.
POINT sinfi komponenta funktsiyalarini quyidagicha ta’riflaymiz:
ifdef POINTCPP
#define POINTCPP 1
#include
#include "point.h"
point ::point(int xi=0, int yi=0)
{
x=xi; y=yi;
}
int &point::givex(void)
{
return x;
}
int &point::givey(void)
{
return y;
}
void point::show(void)
{
putpixel(x,y, getcolor());
}
void point::hide (void)
{
putpixel(x,y,getbcolor());
}
void point::move(int xn=0, int yn=0)
{
hide( );
x=xn; y=yn;
show( );
}
#endif
Kiritilgan point sinfi va komponenta funktsiyalari bilan ishlovchi dasturni keltiramiz:
#include
#include
#include "point.cpp"
int main()
{
point A(200,50);
point B;
point D(500,200);
int dr=DETECT, mod;
initgraph(&dr, &mod, "c:\\borlandc\\bgi");
A.show();getch();
B.show();getch();
D.show();getch();
A.move();getch();
B.move(50,60);getch();
closegraph();
return 0;
}
Qo‘shimcha yuklash. Misol tarikasida '+ ' amalini point sinfi bilan ta’riflanuvchi displeydagi nuqtalarga qo‘llaymiz. Soddalashtirish uchun pointsinfida eng kerakli kompanentalarni qoldiramiz.
#include
#include
class point
{
protected:
int x,y;
public:
point (int xi=0, int yi=0)
{
x=xi; y=yi;
}
void show (void)
{
putpixel (x,y,get color ( ) );
};
point operator+ (point p);
};
point point : : operator + (point &p)
{
point d;
d.x=this.x+p.x;
d.y=this.y+p.y;
return d;
}
int main()
{

int dr=DETECT, mod;


point A(200,50);
point B;
point D(50,120);
INITGRAPH (&dr, &mod, "C\\borlandc \\ bgi");
A.show ( );
getch ( );
B.show ( ); getch ( );
D.show ( ); getch ( );
B=A+D
;
B.show ( ); getch ( );
B=A.operator + (B);
B.show ( ); getch ( );
closegraph ( );
return 0;
}
Dastur bajarilishi natijasida displey ekraniga ketma-ket quyidagi nuqtalar qo‘yiladi: A(200,50); B(0,0); D(50,120); B(250,70), B(450,220)
Lokal sinf. Lokal sinflardan foydalanish xususiyatlarini tushuntirish uchun quyidagi masalani ko‘rib chiqamiz. «Kvadrat» sinfini aniqlash kerak bo‘lsin. Kvadrat tomonlarini koordinatalar o‘qiga parallel deb qaraymiz. Xar bir kvadrat berilganligi sifatida markaz koordinatalari va tomon uzunligi olinadi. Kvadrat sinfi ichida «kesma lokal»sinfini aniqlaymiz. Xar bir kesmani berilganlari sifatida uchlarining koordinatalarini olamiz.
Uchlari mos ravishda olingan to‘rtta kesma kvadratni xosil qiladi. SHu usulda kvadrat ekranda tasvirlanadi.

#include


#include "point.cpp"
class square
{
class segment
{
point pn, pk;
public:
segment(point pin=point(0,0), point pik=point(0,0))
{
pn.givex()=pin.givex();
pn.givey()=pin.givey();
pk.givex()=pik.givex();
pk.givey()=pik.givey();
}
point &beg(void)
{
return pn;
}
point &end (void)
{
return pk;
}
void showSeg()
{
line(pn.givex(), pn.givey(), pk.givex(),
pk.givey());
};
};
segment ab,bc,cd,da;
public:
square(point ci=point(0,0), int di=0)
{
point a,b,c,d;
a.givex()=ci.givex()-di/2;
a.givey()=ci.givey()-di/2;
b.givex()=ci.givex()+di/2;
b.givey()=ci.givey()-di/2;
c.givex()=ci.givex()+di/2;
c.givey()=ci.givey()+di/2;
d givex()=ci.givex()-di/2;
d.givey()=ci.givey()+di/2;
ab.beg()=a; ab.end()=b;
bc.beg()=b; bc end()=c;
cd.beg()=c; cd.end()=d;
da.beg()=d; da end()=a;
}
void showsquare(void)
{
ab.showSeg();
bc.showSeg();
cd.showSeg();
da.showSeg();
}
};
int main()
{
int dr=DETECT,mod;
initgraph(&dr,&mod,"c:\\borlondc\\ bgi");
point p1(80,120);
point p2(250,240);
square A(p1,30);
square B(p2,140);
A.showsquare(); getch();
B.showsquare(); getch();
closegraph();
return 0;
}

Download 47.9 Kb.
1   2   3   4   5   6   7   8




Download 47.9 Kb.