Font
Un obiect de tip Font încapsulează informaţii despre parametrii unui font.
Un constructor al clasei este:
Font(String name, int style, int size)
Stilul unui font este specificat prin intermediul constantelor, ca de exemplu:
Font.PLAIN - normal
Font.BOLD - îngrosat
Font.ITALIC - înclinat
Exemple:
new Font("Arial", Font.BOLD, 12);
new Font("Times New Roman", Font.ITALIC, 12);
Culoare
Orice culoare se obţine din combinaţia culorilor de bază: rosu (Red), verde (Green) şi albastru (Blue),
la care se poate adăuga un grad de transparenţă (componenta Alpha).
Fiecare din aceşti parametri poate lua valori:
- întregi între 0 şi 255
- reale între 0.0 şi 1.0
O culoare este o instanţă a uneia din clasele Color sau SystemColor. Crearea unei culori se poate face:
- cu ajutorul unor constantele definite în cele două clase amintite, dintre care amintim:
Color | SystemColor |
black BLACK
blue BLUE
cyan CYAN
DARK_GRAY darkGray
gray GRAY
green GREEN
LIGHT_GRAY lightGray
magenta MAGENTA
orange ORANGE
pink PINK
red RED
white WHITE
yellow YELLOW
| activeCaption
activeCaptionBorder
activeCaptionText
control
controlHighlight
controlShadow
contolText
desktop
menu
text
textHighlight
window |
Exemple:
Color r = Color.red;
Color g = Color.yellow;
Color fundal = SystemColor.desktop;
- cu ajutorul unui constructor al clasei Color, dintre care amintim constructorii:
Color(float r, float g, float b)
Color(float r, float g, float b, float a)
Color(int r, int g, int b)
Color(int r, int g, int b, int a)
Color(int rgb)
Exemple:
Color alb = new Color(255, 255, 255);
Color negru = new Color(0, 0, 0);
Color rosu = new Color(255, 0, 0);
Imagine
Pentru crearea unui obiect de tip Image se poate folosi o imagine memorată într-un fişier.
Pentru crearea unui astfel de obiect se poate folosi metoda:
public Image getImage(URL url)
public Image getImage(String fisier)
Această metodă se află în clasa Toolkit. Pentru a crea o instaţă a acestei clase
şi a folosi acest obiect se poate proceda astfel:
Toolkit toolkit = Toolkit.getDefaultToolkit();
Image image1 = toolkit.getImage("imageFile.gif");
Image image2 = toolkit.getImage(new URL("http://www.ubbcluj.ro/sigla.gif"));
Folosirea metodei getImage nu implică şi verificarea dacă fişierul precizat prin nume sau
prin obiectl URL există efectiv. Această verificare se face la folosirea imaginii (de ex. la afişare).
Grafică 2D în Java
Desenarea în Java se poate face:
- pe suprafaţa oricărei componente care este o instanţă a unei subclase a clasei Component (de exemplu Frame, Image, etc.)
- la imprimantă, ploter, etc.
- într-o zona de memorie
Fiecare dintre destinaţiile de desenare are anumite particularităţi deci metodele de desenare trebuie să ţină
seama de ele. Pentru ca acestea să nu fie precizate la fiecare desenare, deci destianţia desenării să
fie transparentă utilizatorului, se foloseşte un context de desenare. In funcţie de acest context
se folosesc diverse implemetări a funcţiilor de desenare.
Inainte de a apela o funcţie de desenare trebuie să se obţină un context de desenare pentru destinaţia dorită.
Acest context, un obiect de tip Graphics, se poate obţine:
Metoda repaint() pentru o componentă apelează metoda
paint() şi îi furnizează acesteia contextul grafic pentru componenta curentă.
Clasa Graphics2D extinde clasa Graphics prin faciltăţi suplimentare.
Pentru desenarea la o destinaţie (într-un context grafic) se folsesc anumite valori curente, dintre care amintim:
- un sistem de axe de coordonate unde originea (punctul de coordonate 0,0) se află in
coltul din stânga-sus al dreptunghiului unde se face desenarea, axa 0x este orientată
spre dreapta, iar axa 0y este orientată în jos
- la desenare se foloseşte o culoarea curentă
- la extragerea caracterelor se foloseşte un font curent
Dintre metodele clasei Graphics amintim:
- public abstract void translate(int x, int y) - translatează originea sistemului de coordonate în punctul (x,y) al sistemului de coordonate curent
- public abstract Color getColor() - furnizează culoarea curentă de desenare
- public abstract void setColor(Color c) - precizează culoarea curentă de desenare
- public abstract Font getFont() - furnizează fontul curent
- public abstract void setFont(Font f) - precizează fontul curent
- public abstract FontMetrics getFontMetrics() - furnizează metrica fontului curent??
- public abstract void setFontMetrics(FontMetrics fm) - precizează metrica fontului curent
- public abstract void setPaintMode() - precizează operaţia logica pe pixeli folosită la desenare.
La desenarea unui pixel se foloseşte o anumită operaţie între culoarea pixelului şi culoarea curentă
de desenare
- public abstract void setXORMode(color c1) - precizează că la desenare se foloseşte operatorul XOR
- public abstract void drawLine(int x1, int y1, int x2, int y2) - se desenează un segment din punctul de coordonate (x1,y1) pâna în punctul (x2,y2)
- public abstract void drawRect(int x, int y, int width, int height) - se desenează un dreptunghi cu coltul din stânga-sus in punctul (x,y),
latimea width şi înălţimea height
- public abstract void fillRect(int x, int y, int width, int height) - umple cu culoarea curentă interiorul dreptunghiului determinat de parametrii
- public abstract void clearRect(int x, int y, int width, int height) - şterge dreptunghiul dat
- public abstract void drawRoundRect(int x, int y, int width, int height, int arcWidth, int arcHeight) - desenează un dreptunghi cu colţurile rotunjite,
unde arcWidth şi arcHeight sunt diametrul orizontal şi diametrul vertical al arcelor de rotunjire
- public abstract void fillRoundRect(int x, int y, int width, int height, int arcWidth, int arcHeight) - umple cu culoarea curentă interiorul
unui dreptunghi cu colţurile rotunjite
- public abstract void draw3DRect(int x, int y, int width, int height, boolean raised) - desenează un dreptunghi astfel luminat încăt apare în spaţiu,
(apare ca iese din suprafaţa de bază, dacă raised=true, sau este scufundat în aceasta suprafaţă, dacă raised=false)
- public abstract void fill3dRect(int x, int y, int width, int height, boolean raised) - umple cu culoarea curenta interiorul unui dreptunghi 3D
- public abstract void drawOval(int x, int y, int width, int height) - desenează ovalul inscris în dreptunghiul precizat de parametrii
- public abstract void fillOval(int x, int y, int width, int height) - umple cu culoarea curentă continutul ovalului inscris in dreptunghiul precizat de parametrii
- public abstract void drawArc(int x, int y, int width, int height, int startAngle, int arcAngle) - desenează un arc din elipsa inscrisă
într-un dreptunghi (precizat de primii patru parametri). Acest arc începe de la unghiul startAngle si se la unghiul arcAngle.
Unghiurile sunt măsurate in grade în sens trigonometric.
- public abstract void fillArc(int x, int y, int width, int height, int startAngle, int arcAngle) - umple cu culoarea
curenta sectorul precizat de parametrii (cu semnificaţia de la drawArc)
- public abstract void drawPolyline(int[] xPoints, int[] yPoints, int nPoints) - desenează o succesiune de segmente.
Coordonatele vârfurilor apar in vectorii precizaţi, iar numărul de puncte este nPoints
- public abstract void drawPoligon(int[] xPoints, int[] yPoints, int nPoints) - desenează un poligon cu nPoints vârfuri,
unde coordonatele vârfurilor apar in vectorii precizaţi
- public abstract void drawPoligon(Poligon p) - desenează poligonul specificat în argument
- public abstract void fillPoligon(int[] xPoints, int[] yPoints, int nPoints) - umple cu culoarea curentă un poligon
- public abstract void fillPoligon(Poligon p) - umple cu culoarea curentă un poligon
- public abstract void drawString(String str, int x, int y) - desenează şirul de caractere str, folosind fontul şi
culoarea curente. Primul caracter începe în punctul de coordonate (x,y).
- public abstract void drawString(AttributedCharacterIterator iterator, int x, int y) - desenează un şir de caractere precizat de
obiectul iterator (se precizează caracterele şi fontul fiecărui caracter). Primul caracter începe în punctul de coordonate (x,y).
- public abstract void drawChars( char[] data, int offset, int length, int x, int y) - desenează length caractere
din tabloul data, incepând cu caracterul cu indexul offset. Se foloseşte fontul
şi culoarea curente. Primul caracter începe în punctul de coordonate (x,y).
- extragerea (desenarea) unei imagini:
boolean drawImage(Image img, int x, int y, ImageObserver observer)
boolean drawImage(Image img, int x, int y, Color bgcolor, ImageObserver observer)
boolean drawImage(Image img, int x, int y, int width, int height, ImageObserver observer)
boolean drawImage(Image img, int x, int y, int width, int height, Color bgcolor, ImageObserver observer)
unde:
img este obiectul unde se află imaginea
- x şi y sunt coordonatele din stânga-sus de unde începe să se afişeze imaginea
- observer este un obiect care care va fi informat pe masura executării metodei (se poate folosi this).
- width, heigth reprezintă înălţimea şi lăţimea la care trebuie scalată imaginea
- bgColor este culoarea cu care vor fi coloraţi pixelii transparenţi ai imaginii
Programmer's Guide to the JavaTM 2D API