Ekraanigraafika vahendid I Aabits2002 vihik 9 Neile kel
Ekraanigraafika vahendid (I) [Aabits(2002), vihik 9] Neile, kel pole uut aabitsat: kõik (uue) aabitsa programmitekstid on saadaval http: //www. cs. ut. ee/~kiho/progr/Aabits/Programmid/ Edasijõudnutele: Java kogu “arsenali” kirjeldus on saadaval http: //java. sun. com/j 2 se/1. 4. 2/docs/api/index. html
• Kuidas teha raam ehk aken? • Kuidas lisada raamile joonistamise ala ehk tahvel? • Kuidas tahvlile joonistada - teksti - lõike - ristkülikuid - ringe või ovaale
Kuidas teha raam ehk aken? import java. awt. *; // Point, Dimension import javax. swing. *; // JFrame class Jooniseraam{// PEAKLASS // raam: public static void main(String[] args){ JFrame raam = new JFrame("Joonis"); raam. set. Location(new Point(100, 100)); raam. set. Size(new Dimension(600, 500)); raam. show(); } } Raami asukoht ekraanil ülemine vasak nurk: (100; 100) Raami mõõtmed laius: 600, kõrgus: 500
Kuidas lisada raamile joonistamise ala ehk tahvel? 1. Teha klass Tahvel. 2. Klassi Jooniseraam lisada korraldus uue tahvli lisamiseks.
1. Klass Tahvel import java. awt. *; // Graphics import javax. swing. *; // JPanel class Tahvel extends JPanel{ // tahvel joonise kujutamiseks public void paint. Component(Graphics g){ super. paint. Component(g); } }
2. Klassi Jooniseraam lisada korraldus uue tahvli lisamiseks import java. awt. *; import javax. swing. *; // Point, Dimension // JFrame class Jooniseraam{// PEAKLASS // tahvliga raam public static void main(String[] arg){ JFrame raam = new JFrame("Joonis"); raam. set. Location(new Point(100, 100)); raam. set. Size(new Dimension(600, 500)); raam. get. Content. Pane(). add(new Tahvel( )); raam. show(); } }
Kuidas tahvlile joonistada? 3. Teha klass Joonis, mis sisaldab vajalikku joonistamiste meetodit joonistada( ). 4. Klassi Tahvel lisada selle meetodi rakendamine.
3. Teha klass Joonis, mis sisaldab vajalikku joonistamiste meetodit joonistada() import java. awt. *; // Graphics, Color, Point class Joonis{ // Põhimeetod: joonistada(), rakendamiseks klassist Tahvel // konstant: static final Color TAUST = Color. white; // tahvli taustvärv static void joonistada(Tahvel t, Graphics g){ // Antud: tahvel t, graafikakontekst g ja. . . // Tulemus: joonis tahvlil t t. set. Background(TAUST); // seada tahvli taustvärv // raamitud tekst tahvli ülemisse vasakusse nurka: g. set. Color(Color. red); g. draw. String(”Minu esimene joonis”, 15, 20); // tekst g. draw. Rect(10, 7, 125, 15); // raamida tekst } }
4. Klassi Tahvel lisada selle meetodi rakendamine import java. awt. *; // Graphics import javax. swing. *; // JPanel class Tahvel extends JPanel{ // tahvel joonise kujutamiseks public void paint. Component(Graphics g){ super. paint. Component(g); Joonis. joonistada(this, g); }//paint. Component }//Tahvel
Kuidas teha teistsuguseid jooniseid? Muuta/täiendada soovi kohaselt meetodit joonistada() klassis Joonis. Klassid Jooniseraam ja Tahvel jäävad samaks. Kasutada on üksikute elementide joonistamismeetodid süsteemklassist Graphics. Järgnevas nende rakendamise näiteid graafikakonteksti isendi osuti g korral: g. draw. String(“vgt”, x, y); vgt (x; y) g. draw. Oval(x, y, laius, kõrgus); kõrgus laius
g. set. Color(v); seada v joonistamise jooksvaks värviks, v näiteid: Color. black must Color. blue sinine Color. cyan hele rohekas-sinine Color. dark. Gray tumehall Color. gray hall Color. green roheline Color. light. Gray helehall Color. magenta lilla Color. orange oranž Color. pink roosa Color. red punane Color. white valge Color. yellow kollane
g. draw. Line(x, y, x 1, y 1); - lõik (x; y)---(x 1; y 1) g. draw. Rect(x, y, laius, kõrgus); - ristküliku küljed, (x; y): ülemine vasak nurk g. fill. Rect(x, y, laius, kõrgus); - ristkülik g. draw. Oval(x, y, laius, kõrgus); - ovaaljoon mõttelisse ristkülikusse g. fill. Oval(x, y, laius, kõrgus); - ovaal mõttelisse ristkülikusse Jooksva kirjakuju seadmise (enne g. draw. String()) näiteid: g. set. Font(new Font(“Serif”, Font. PLAIN, 14)); g. set. Font(new Font(“Courier”, Font. BOLD, 12)); g. set. Font(new Font(“Sans. Serif”, Font. ITALIC, 16)); kirja tüüp kuju suurus PLAIN - tavaline; BOLD - poolpaks, ITALIC - kursiiv
Muster I Joonistamine ekraanikoordinaatides/Joonis. Muster. java Klassi Tahvel pole vaja muuta. Peaklassis Jooniseraam võib soovi korral muuta raami esialgset paiknemist ja suurust määravaid konstante.
Muster II Joonistamine tavakoordinaatides/Joonis. Muster. java Klassi Tahvel pole vaja muuta. Peaklassis Jooniseraam võib soovi korral muuta raami esialgset paiknemist ja suurust määravaid konstante.
Failis Joonis. Muster. java tuleb muuta joonte // =============== vahel paiknevat osa //=============== Lahendamiseks on kindlasti vajalikud veel klassid (Aabitsast) Punkt ja Sirge.
Funksiooni graafiku joonistamine Klassiskeem Jooniseraam Tahvel main( ) paint. Component( ) Punkt Sirge Aabits, vihik 2 Fail Joonis. Gr. java x 0 x 1 x. Samm fx. Värv fx. Valem f() joonistada( ) juhupunkt( ) teisend() joonistada. Punkt( ) joonistada. Lõik( ) joonistada. Ring( ) joonistada. Teljed( )
Klass Joonis. java (failis Joonis. Gr. java) Meetodite väljakutsete hierarhia tahvlile joonistamisel <Tahvel>. paint. Component Joonis. joonistada. Teljed Joonis. f Joonis. joonistada. Lõik Joonis. teisend
Ekraanigraafika vahendid (II) Rakend [Aabits(2002), vihik 15]
Applet Lihtne. Rakend TAUSTA_VÄRV LAIUS KÕRGUS g init( ) paint( )
import java. awt. *; import java. applet. Applet; public class Lihtne. Rakend extends Applet{ // värvid: static final Color TAUSTA_VÄRV = Color. yellow; // rakendi suurus: int LAIUS, KÕRGUS; // rakendi mõõdud Graphics g; // rakendi graafikakontekst
public void init( ){ set. Background(TAUSTA_VÄRV); // värvida taust set. Visible(true); // rakend nähtavaks g = get. Graphics(); // graafikakontekst // parameetrid rakendi suuruse põhjal: LAIUS = get. Size(). width; KÕRGUS = get. Size(). height; }
public void paint(Graphics g){ Joonis. joonista(LAIUS, KÕRGUS, g); } // Märkus. Klassi Joonis meetod joonista( ) // erineb meetodist joonistada( ) // vaid selle poolest, et tahvli // asemel antakse ette rakend }
Rakendiviide: - - - - - - - fail Lihtne. Rakend. html <html> <title>PROOV</title> <applet code = Lihtne. Rakend. class width = 550 height = 450> </applet> </html> Rakendikäituri käivitamine: appletviewer Lihtne. Rakend. html
Meetodeid: public void init( ) käivitub: // rakendi laadimisel public void paint(Graphics g ) // rakendi // ekraaniala muutumisel (ilmumisel) public void start( ) // pärast rakendi laadimist // ja ilmumist ekraanile
Ülesanne: joonistada ümmargune südamik; selle ümber iga 1 sekundi järel järjest suurem kontsentriline ring; pärast 25 -nda kontsentrilise ringi joonistamist kustutada ringid ja alustada uuesti esimese ringi joonistamisest. rakend taust (kollane) südamik (roheline) ringid (punased)
import java. awt. *; // --> Graphics, Color import javax. swing. *; // --> JApplet public class Rakend extends JApplet { // värvid: final Color TAUST = Color. yellow; final Color SÜDAMIK = Color. green; final Color RING = Color. red; // rakendi mõõdud: final int LAIUS = 300; final int KÕRGUS = 300; // esimese ringi ja südamiku mõõdud ning algpunkt: int laius = LAIUS/4; int kõrgus = KÕRGUS/4; int kesk. X = LAIUS/2 - laius/2; int kesk. Y = KÕRGUS/2 - kõrgus/2;
Graphics g; int i. Ring; // parajasti joonistatava ringi number // seatakse meetodis paint() public void paint(Graphics g){ //käivitatakse esimesena set. Background(TAUST); // sama, mis: //g. set. Color(TAUST); //g. fill. Rect(0, 0, get. Size(). width, get. Size(). height); g. set. Color(SÜDAMIK); g. fill. Oval(kesk. X, kesk. Y, laius, kõrgus); // ringidega algusest peale: i. Ring = 99; // et kustutataks kõik ringid }//paint(g)
public void init( ){ set. Size(LAIUS, KÕRGUS); // mõõdud rakendile g = get. Graphics(); // rakendi graafikakontekst set. Visible(true); // rakend nähtvaks }//init public void start( ){ for(; ; i. Ring++){ // kontsentr. ringide joonistamise tsükkel if(i. Ring > 24){ // ringidega algusest peale i. Ring = 0;
// kustutada kõik 25 ringi: g. set. Color(TAUST); for(int i = 0; i < 25 ; i++){ int k = i*5; g. draw. Oval(kesk. X-k, kesk. Y-k, laius+2*k, kõrgus+2*k); }//for i }//if // joonistada üks ring (number i. Ring):
g. set. Color(Color. red); int k = i. Ring*5; g. draw. Oval(kesk. X-k, kesk. Y-k, laius+2*k, kõrgus+2*k); // viivitus 1 sekund: try{ Thread. current. Thread(). sleep(1000); } catch(Interrupted. Exception e){} }//for i. Ring }//start }//Rakend
Hääldusjuhiseid black [blæk ] – must blue [blu ] – sinine bold [bəʊld ] – poolpaks [üks kirja kujudest] color [kʌlɜː] – värv; värvus cyan [saɪæn ] – heleroheline; tsüaniidne component [kʌmpəʊnʌnt ] – komponent courier [kɜːiɜː] – käskjalg, kuller [üks kirja tüüpidest] dark [dɒrk ] – tume dimension [dɪmenʃʌn ] – mõõde; dimensioon draw [drɔː] – joonistama font [fɒnt ] – kiri; font
frame [freɪm ] – raam gray [greɪ ] – hall green [grin ] – roheline import [ɪmpɔːrt ] – importida italic [aɪtælɪk ] – kursiiv [üks kirja kujudest] J [dʒeɪ ] –J light [laɪt ] – hele location [ləʊkeɪʃʌn ] – asukoht magenta [mʌdʒentʌ ] – lillakaspunane orange [ɔːrʌndʒ] – oranž oval [əʊvʌl ] – ovaal paint [klæs ] – värvida panel [klæs ] – paneel pink [klæs ] – roosa
plain [pleɪn] – harilik [üks kirja kujudest] point [pɔɪnt ] – punkt rectangle [rektæŋgʌl ] – ristkülik red [red ] – punane sansserif [sansserif ʃəʊ ] – sansseriif [üks kirja tüüpidest] serif [serif ] – seriif [üks kirja tüüpidest] set [set ] – seada show [ʃəʊ ] – näidata size [saɪz ] – suurus super [supɜː] – ülemswing [swɪŋ ] – kiik; hoog white [waɪt ] – valge yellow [jeləʊ ] – kollane
- Slides: 33