Java 2D - Java 2D

În calcul , Java 2D este o API pentru desenarea graficelor bidimensionale folosind limbajul de programare Java . Fiecare operație de desen Java 2D poate fi tratată în final ca să completeze o formă folosind o vopsea și să compună rezultatul pe ecran .

Organizare

API-ul Java 2D și documentația sa sunt disponibile pentru descărcare ca parte a JDK 6. Clasele API Java 2D sunt organizate în următoarele pachete din JDK 6:

Noțiuni de bază

Aceste obiecte sunt o parte necesară a fiecărei operații de desen Java 2D.

forme

O formă în Java 2D este o graniță care definește un interior și un exterior. Pixelii din interiorul formei sunt afectați de operația de desen, cei de afară nu sunt.

Încercarea de a completa un segment de linie dreaptă nu va fi afectată de pixeli, deoarece o astfel de formă nu conține niciun pixel în sine. În schimb, trebuie utilizat un dreptunghi subțire, astfel încât forma să conțină niște pixeli.

Vopsele

O vopsea generează culorile care trebuie utilizate pentru fiecare pixel al operației de umplere. Cea mai simplă pictură este cea java.awt.Colorcare generează aceeași culoare pentru toți pixelii. Vopselele mai complicate pot produce gradații, imagini sau, într-adevăr, orice combinație de culori. Completarea unei forme circulare folosind culoarea galbenă are ca rezultat un cerc galben solid, în timp ce umplerea aceleiași forme circulare folosind o vopsea care generează o imagine produce o decupare circulară a imaginii.

compozite

În timpul oricărei operații de desen, există o sursă (pixelii produși de vopsea) și o destinație (pixelii deja pe ecran). În mod normal, pixelii sursă pur și simplu suprascrie pixelii de destinație, dar compozitul permite schimbarea acestui comportament.

Compozitul, având în vedere pixeli sursă și destinație, produce rezultatul final care în cele din urmă ajunge pe ecran. Cel mai frecvent compozit este cel java.awt.AlphaCompositecare poate trata desenarea pixelilor ca fiind parțial transparentă, astfel încât pixelii de destinație să apară până la un anumit grad.

Umplere

Pentru a completa o formă, primul pas este să identificați ce pixeli se încadrează în formă. Acești pixeli vor fi afectați de operația de completare. Pixelii care sunt parțial în interior și parțial în afara formei pot fi afectați într-o măsură mai mică dacă este activat anti-aliasing .

Vopseaua este solicitată apoi să genereze o culoare pentru fiecare dintre pixelii care vor fi pictați. În cazul obișnuit al unei umpleri cu culori solide, fiecare pixel va fi setat la aceeași culoare.

Compozitul preia pixeli generați de vopsea și îi combină cu pixelii deja pe ecran pentru a produce rezultatul final.

Obiecte avansate

Aceste obiecte pot fi privite ca îndeplinindu-și îndatoririle în termenii celor mai simple obiecte descrise mai sus.

Transforma

Fiecare operație Java 2D este supusă unei transformări , astfel încât formele pot fi traduse, rotite, tăiate și scalate pe măsură ce sunt desenate. Transformarea activă este cel mai adesea transformarea identității , care nu face nimic.

Completarea folosind o transformare poate fi privită ca fiind doar crearea unei forme noi, transformate și apoi completarea acestei forme.

Accident vascular cerebral

În plus față de operația de completare , Java 2D oferă o operație de tragere . În timp ce umplerea atrage interiorul unei forme, desenul își trage conturul. Conturul poate fi la fel de simplu ca o linie subțire sau la fel de complicat ca o linie punctată cu fiecare liniuță având marginile rotunjite.

Obiectul responsabil de generarea conturului este lovitura . Având o formă de intrare, cursa produce o nouă formă reprezentând conturul său. De exemplu, un segment de linie infinit subțire (fără interior) ar putea fi mângâiat într-un dreptunghi lat de un pixel.

Prin urmare, o operație de tragere poate fi descrisă ca fiind crearea unui obiect nou, mângâiat și apoi completarea acelui obiect.

Tehnic vorbind, cursa este necesară doar pentru a accepta o formă de intrare și a produce o nouă formă. Implementarea accidentului vascular cerebral furnizată cu Java 2D implementează regulile conturului descrise mai sus, dar o lovitură creată personalizat ar putea produce orice formă dorea.

optimizări

Conceptual, desenarea unei linii negre drepte în Java 2D poate fi gândită ca creând un segment de linie, transformând-o în funcție de transformarea curentă, mângâind-o pentru a crea un dreptunghi subțire, interogând această formă pentru a calcula pixelii afectați, generând pixeli folosind java.awt.Color.BLACK, apoi compunerea rezultatelor pe ecran.

Cu toate acestea, efectuarea acestei întregi secvențe de pași pentru fiecare operațiune de desen ar fi foarte ineficientă. Prin urmare, Java 2D optimizează operațiunile obișnuite de desen, astfel încât multe dintre aceste etape pot fi omise. Dacă vopseaua este o culoare simplă simplă, de exemplu, nu este necesar să o comandați să genereze o listă de culori care să fie vopsite. De asemenea, în cazul în care este utilizat compozitul implicit complet opac, cererea acestuia să efectueze operațiunea de compozitie nu este necesară și ar pierde efortul.

Java 2D efectuează cantitatea minimă de muncă necesară pentru a face să pară ca și cum ar efectua toate aceste etape pentru fiecare operație, păstrând astfel atât o flexibilitate mare, cât și o performanță ridicată.

Destinaţie

Pentru simplitate, exemplele textuale furnizate în acest articol au presupus că ecranul este dispozitivul de destinație. Cu toate acestea, destinația poate fi orice, cum ar fi o imprimantă, o imagine de memorie sau chiar un obiect care acceptă comenzi grafice Java 2D și le traduce în fișiere cu imagini grafice vectoriale .

Interoperabilitate Java2D / OpenGL

De când Java SE 6 , Java2D și OpenGL au devenit interoperabile, permițând, de exemplu, desenarea graficelor 3D animate în loc de pictograme pe un buton (a se vedea JOGL ).

Vezi si

Referințe

linkuri externe