Graphics klasa

 

Klasa Applet direktno nasleđuje klasu Panel. Ovo praktično znači da se aplet ponaša kao kontejner, tj. da u njega možete da ubacite bilo koju grafičku kontrolu paketa java.awt, kao u bilo koji drugi panel. U prethodnim lekcijama kada je bilo rači o java.awt paketu, razmatrali smo samo standardne komponente grafičkog interfejsa. Sada će biti više reči o klasama primitivne grafike i fontovima.

 

Klasa Graphics je deo java.awt paketa. Ona obezbeđuje osnovne metode za iscrtavanje grafičkih elemenata. Objekat ove klase se prosleđuje apletu od strane browser-a u kome se aplet izvršava. Ovaj objekat praktično predstavlja površinu unutar web strane dodeljenu apletu.

 

Svi metodi ove klase koriste koordinatni sistem u kome tačka (0,0) odgovara gornjem levom uglu apleta. Pozitivne vrednosti x ose odgovaraju tačkama desno od koordinatnog centra, dok pozitivne vrednosti y ose odgovaraju tačkama dole u odnosu na koordinatni početak. Sve vrednosti koordinata su celobrojne, tj. predstavljaju ceo broj piksela.

 

 

Metodi klase Graphics

 

Linija

Za iscrtavanje linije koristi se metod drawLine() na sledeći način:

 

          g.drawLine(20,20,30,30);

 

Ovako pozvan metod iscrtava liniju od tačke (20,20) do tačke (30,30), koristeći trenutnu boju.

 

Pravougaonik

Klasa Graphics omogućava iscrtavanje tri vrste pravougaonika: obične, pravougaonike sa zaobljenim uglovima i 3D pravougaonike sa osenčenim ivicama. Za svaki od njih imate na raspolaganju metode koji iscrtavaju prazan praougaonik ili obojen. Ovi metodi su drawRect(), fillRect(), drawRoundRect(), fillRoundRect(), draw3DRect() i fill3DRect(). Evo nekoliko primera upotrebe ovih metoda.

 

g.fillRect(120, 20, 60, 60); - iscrtava obojen pravougaonik sa gornjim levim uglom u tački (120, 20), širinom 60 i visinom 60

g.drawRoundRect(20,20,60,60,10,10); - iscrtava prazan zaobljen pravougaonik sa gornjim levim uglom u tački (20,20), širinom i visinom 60 i sa zaobljenim uglovima dužine 10

g.draw3DRect(20,20,60,60,true); - iscrtava prazan pravougaonik sa gornjim levim uglom u tački (20,20), širinom i visinom 60. Poslednji argument čija je vrednost true iscrtava parvougaonik tako da se stiče utisak da je on uvučen u pozadinu.

 

Poligon

Poligon predstavlja isprekidanu liniju sa neograničenim brojem strana, tj. temena. Za iscrtavanje poligona koristite metode drawPolygon() i fillPolygon(). Ova dva metoda imaju tri argumenta. Prva dva su nizovi x i y koordinata temena. Treći predstavlja ukupan broj temena poligona. Na primer,

 

          int xKoordinate[] = { 39,94,97,142,53,58,26 };

          int yKoordinate [] = { 33,74,36,70,108,80,106 };

          int brTacaka = xKoordinate.length;

          g.drawPolygon(xKoordinate, yKoordinate, brTacaka);

 

Ovim metodima, kao argument umesto nizova koordinata, možete da prosledite i objekat klase Polygon.

 

Takođe, primetite da Java ne zatvara automatski poligon iscrtan pomoću metoda drawPolygon(). Ukoliko želite da bude zatvoren, neophodno je da uključite početnu tačku poligona na kraj niza koordinata. Nasuprot njemu, metod fillPolygon() zatvara poligon.

 

Oval

Pod terminom oval u okviru ovog kursa podrazumevaćemo krug ili elipsu. Iscrtavaju se pomoću metoda drawOval() i fillOval(). Argumenti ovih metoda predstavljaju koordinate gornjeg levog temena, širinu i visinu pravougaonika opisanog oko ovala. Na primer, naredba g.drawOval(20,20,450,250); bi iscrtala sledeću elipsu:

 

(20,20)

450

 

Lukovi

Za iscrtavanje lukova koriste se metodi drawArc() i fillArc(). Ovi metodi imaju šest argumenata. Prva četiri definišu oval čiji je luk deo. Poslednja dva određuju ugao od kog počinje početna tačka luka i ugao koji zahvata ceo luk. Na primer, sledeća naredba

 

          g.drawArc(20,20,450,250,90,45);

 

bi iscrtala luk kao na slici:

 

(20,20)

 

450

 

900

 

900+450

  

Kopiranje i brisanje

 

Kada ste jednom nacrtali nekoliko oblika na ekranu, možda ćete poželeti da ih pomerate ili da ih obrišete. Unutar klase Graphics postoji nekoliko metoda koji mogu da vam pomognu u tom slučaju.

Metod copyArea() kopira jednu pravougaonu površinu apleta u drugu. Ovaj metod ima šest argumenata, koordinate gornjeg levog ugla pravougaone površine koja se kopira, širinu i visinu površi i udaljenost po x i y osi za koliko se sadržaj te površi pomera. Na primer, naredba

 

          g.copyArea(0,0,100,100,100,0);

 

kopira kvadratnu površinu stranice 100 piksela za 100 piksela u desno.

 

Za brisanje neke površine koristi se metod clearRect(). Ona briše sve što se nalazi unutar nekog pravougaonika i boji taj pravougaonik bojom pozadine. Da biste obrisali celu površinu apleta, kombinujte ovaj metod sa metodom getSize() koji vraća veličinu apleta:

 

          g.clearRect(0,0,getSize().width, getSize().height);

 

 

Rad sa fontovima

 

Slično kao što ste iscrtavali grafičke elemente koristeći klasu Graphics, moguće je i iscrtavanje teksta unutar apleta. Ovo se obično postiže upotrebom klasa Font i FontMetrics.

 

Da biste prikazali tekst unutar apleta, prvo kreirajte objekat klase Font.

 

          Font f = new Font("TimesRoman", Font.BOLD, 24);

 

Prethodnom naredbom se kreira objekat koji predstavlja određen font, tj. njegovo ime, stil i veličinu.

Fontovi koji su dostupni apletu u trenutku izvršavanja zavise od fontova instaliranih na korisnikovom računaru. Ukoliko unutar apleta odaberete font koji korisnik nema na svom računaru, ovaj font će biti zamenjen nekim podrazumevanim (obično fontom Courier). Zbog toga je dobro koristiti standardne fontove.

 

Kada ste kreirali objekat klase Font, neophodno je da ga dodelite vašem apletu, tj. da ga postavite za tekući.

 

          g.setFont(f);

 

Sav tekst koji nakon ove naredbe ispišete unutar apleta će koristiti font f.

Samo ispisivanje teksta se postiže pomoću metoda drawString().

 

          g.drawString("Programski jezik Java",20,50);

 

Ovaj metod, kao što vidite, ima tri argumenta. Poslednja dva određuju tačku od koje počinje ispisivanje teksta.

 

Unutar klase Graphics, sem metoda drawString(), postoji i metod drawChars() koji ispisuje niz karaktera. On ima pet argumenata: niz karaktera koji se ispisuje, indeks prvog koji će biti ispisan, indeks poslednjeg i x i y koordinatu tačke od koje počinje ispisivanje.

 

Unutar klase Font postoji nekoliko metoda pomoću kojih možete da dobijete neke osnovne informacije o fontu (getName(), getSize(), getStyle(), isPlain(), isBold() i dr.). Za detaljnije informacije, kao što su širina i visina pojedinog karaktera, neophodno je da koristite klasu FontMetrics.

 

Pogledajte sledeći primer:

 

          Font f = new Font("TimesRoman", Font.BOLD, 12);

          FontMetrics fontMetrika = getFontMetrics(f);

 

Kada ste kreirali objekat klase FontMetrics na ovaj način, na raspolaganju vam je nekoliko metoda ove klase.

         

stringWidth(string) – vraća širinu stringa u pikselima

charWidth() – vraća širinu karaktera

getAscent() – vraća visinu od donje ivice fonta do gornje ivice karaktera

getDescent() – vraća visinu od donje ivice fonta do donje ivice karaktera (za karaktere kao što su p ili q, koji se protežu ispod donje ivice fonta)

getLeading() – vraća rastojanje između donje ivice karaktera jedne linije teksta i gornje ivice karaktera druge linije teksta

Dodaj komentar Sviđa mi se - (0) Ne sviđa mi se - (0)    

  • Rad sa grafikom i fontovima u apletima 1
  • Rad sa grafikom i fontovima u apletima 2
  • Rad sa grafikom i fontovima u apletima 3