curs 6 slides

16
OPERATII GRAFICE DE BAZA FOLOSIND JAVA2D Curs 6 - Java

Upload: danny-alexandru-norocia

Post on 06-Nov-2015

268 views

Category:

Documents


0 download

DESCRIPTION

mnbjhb

TRANSCRIPT

  • OPERATII GRAFICE DE BAZA FOLOSIND JAVA2D

    Curs 6 - Java

  • Curs 5 - Java

    DESENAREA FORMELOR-CONTUR SI UMPLEREA

    Clasele Java2D extind facilitatile claselor grafice din java.awt, cum sunt cele pe care le-am vazut in paginile anterioare. Ele nu inlocuiesc clasele existente ci doar aduc posibilitati noi.

    Functiile Java2D contin printre altele: - metode speciale de umplere cu degradeuri si texturi - tuse care definesc grosime si stilul desenului - posibilitati de netezire a marginilor obiectelor desenate (anti-aliasing) Operatiile de desenare de pana acum sunt apelate pentru obiecte Graphics ce reprezinta zona in care desenam; pentru Java2D acest obiect trebuie folosit pentru a crea un nou obiect Graphics2D, ca in urmatoarea metoda paint(): public void paint(Graphics ecran) { Graphics2D ecran2D=(Graphics)ecran; }

  • Curs 5 - Java

    COLORAREA JAVA2D

    Desenele care nu sunt 2D pot selecta un singur atribut: culoarea. 2D ofera o gama larga de atribute de culoare, grosimea liniei, modelul de umplere, transparenta si altele.

    Culorile sunt specificate folosind metoda setColor(), care funtioneaza la fel cu metoda Graphics cu acelasi nume - diferenta constand in obiectul argument care acum este de tip Graphics2D.

  • Curs 5 - Java

    MODELE DE UMPLERE

    Texturile sau modelele de umplere, definesc modul cum este umplut un obiect. In Java2D putem folosi o culoare solida, un degrade, o textura sau un model oarecare

    Un model de umplere este definit prin folosirea metodei setPaint() a clasei Graphics2D, avand ca argument un obiect Paint. Interfata Paint este implementata de fiecare clasa care poate juca rolul unui model de umplere - ca de exemplu GradientPaint, TexturePaint sau Color.

    GradientPaint(x1,y1,culoare1,x2,y2,culoare2); Punctul x1,y1 este punctul de unde incepe culoare culoare1 iar x2,y2 este punctul unde se termina trecerea la culoare2. Pentru a implementa un degrade ciclic introducem un argument suplimentar: GradientPaint(x1,y1,culoare1,x2,y2,culoare2,true);

  • Curs 5 - Java

    MODELE DE UMPLERE

    Dupa ce am definit un obiect GradientPaint il vom declara atribut curent de desenare cu setPaint(): GradientPaint model=new GradientPaint(0f,0f,Color.white,100f,45f,Color.blue); ecran2D.setPaint(model); Toate operatiile de desenare care vor urma pentru obiectul ecran2D vor folosi acest model de umplere.

  • Curs 5 - Java

    TUSE DE DESEN

    Liniile desenate in operatiile non-Java2D au grosimea standard de 1 pixel. Java2D da posibilitatea de a modifica grosimea liniei de desenare cu metoda setStroke() pentru un obiect BasicStroke. Un constructor BasicStroke simplu preia trei argumente: - o valoare float pentru grosimea liniei, valoarea implicita fiind 1.0 - o valoare int care determina stilul terminatiei liniei - o valoare int care determina stilul imbinarii intre doua segmente de linie

  • Curs 5 - Java

    TUSE DE DESEN

    Stilurile posibile pentru terminatii sunt CAP_BUTT (fara terminatie), CAP_ROUND (pentru terminatii circulare) si CAP_SQUARE (pentru terminatii rectangulare) Diferenta intre primul si ultimul stil este foarte mica, o linie cu CAP_SQUARE fiind mai lunga, datorita terminatiei de forma patrata.

  • Curs 5 - Java

    TUSE DE DESEN

    Stilurile de imbinare sunt JOIN_MITER (pentru imbinarea prin prelungirea muchiilor exterioare), JOIN_ROUND (pentru imbinarea rotunjita) si JOIN_BEVEL (pentru o imbinare tesita).

  • Curs 5 - Java

    CREAREA OBIECTELOR CE VOR FI DESENATE

    Desenarea obiectelor in Java2D se face prin definirea lor ca forme geometrice, folosind clasele pachetului java.awt.geom. Putem desena toate formele intalnite pana acum - linii, dreptunghiuri, ovale, arce si poligoane. Clasa Graphics2D nu poseda metode diferite pentru desenarea fiecareia dintre forme. In schimb se defineste mai intai forma dorita si apoi se foloseste ca argument pentru una dintre metodele fill() sau draw().

  • Curs 5 - Java

    LINII

    Se creaza folosind clasa Line2d.Float. Aceasta clasa preia patru argumente: Line2D.Float ln=new Line2D.Float(60f,5f,13f,28f);

  • Curs 5 - Java

    DREPTUNGHIURI

    Dreptunghiurile sunt create folosind clasele Rectangle2D.Float sau Rectangle2D.Double. Diferenta intre cele doua este tipul argumentelor. Rectangle2D.Float primeste patru argumente: coordonatele x, y, latimea si inaltimea: Rectangle2D.Float dr=new Rectangle2D.Float(10f,13f,40f,20f);

  • Curs 5 - Java

    ELIPSE

    Obiectele ovale sunt numite in Java2D elipse si pot fi create cu clasa Ellipse2D.Float. Este nevoie de patru argumente: coordonatele x, y, latimea si inaltimea. Instructiunea de mai jos creaza o elipsa la coordonata 113,25 cu o latime de 22 pixeli si o inaltime de 40 pixeli: Ellipse2D.Float el=new Ellipse2D.Float(113,25,22,40);

  • Curs 5 - Java

    ARCE

    Acestea sunt create prin clasa Arc2D.Float. Sunt create asemanator cu versiunea lor non-2D dar cu o diferenta: putem stabili modul de inchidere. Arc2D.Float primeste sapte argumente. Primele patru se refera la elipsa din care face parte arcul: coordonatele x, y, latimea si inaltimea. Ultimele trei se refera la unghiul de unde incepe desenarea, numarul de grade pe care se intinde si un intreg care stabileste modul de inchidere. Exista o deosebire fata de arcele non-2D: numarul de grade pe care se intinde arcul 2D este specificat ca avand sensul pozitiv in sensul acelor de ceas. Modul de inchidere poate fi: - Arc2D.OPEN (pentru arc dechis) - Arc2D.CHORD (pentru un arc ale carui capete sunt unite printr-o linie dreapta) - Arc2D.PIE (pentru un arc cu capetele unite prin intermediul centrului elipsei)

    Stilul de inchidere Arc2D.OPEN nu se aplica arcelor umplute; un astfel de arc umplut va fi automat inchis cu stilul Arc2D.CHORD.

  • Curs 5 - Java

    POLIGOANE

    Acestea sunt create in Java2D prin deplasarile dintr-un punct al poligonului in altul. Deplasarile necesare pentru crearea poligonului sunt definite in obiectul GeneralPath, care apartine pachetului java.awt.geom. GeneralPath polig=new GeneralPath(); Metoda moveTo() a clasei GeneralPath este folosita pentru a crea primul punct al poligonului. polig.moveTo(5f,0f); Metoda lineTo() se foloseste pentru crearea unei linii care incepe din punctul curent si se termina intr-un nou punct: polig.lineTo(205f,0f); polig.lineTo(205f,90f);

  • Curs 5 - Java

    POLIGOANE

    Daca vrem sa inchidem un poligon se poate folosi metoda closePath() fara nici un argument: polig.closePath(); Aceasta metoda inchide un poligon prin conectarea punctului curent cu punctul specificat in cel mai recent apel de metoda moveTo(). Putem inchide poligonul si fara aceasta metoda, prin folosirea metodei LineTo() care conecteaza punctul curent cu punctul initial al poligonului. O data creata forma poligonala ea poate fi reprezentata (desenata) ca orice alt obiect, cu metodele fill() sau draw().

  • Curs 5 - Java

    TEXT

    Sirurile sunt desenate in Java2D tot cu metoda drawString(). Aceasta preia trei argumente: obiectul String si coordonatele x si y - cu mentiunea ca aceste coordonate sunt de tip float, ca la toate coordonatele din Java2D.