1 / 24

Számítógépes Grafika 2. gyakorlat

Programtervező informatikus (esti) 2011/2012 őszi félév. Számítógépes Grafika 2. gyakorlat. Utasítások. PImage: .gif, .jpg, .tga és .png képek megjelenítését szolgáló osztály A .width és .height mezők az adott kép szélességét és magasságát tárolják A .pixels tömbje pedig a színeket.

maddy
Download Presentation

Számítógépes Grafika 2. gyakorlat

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Programtervező informatikus (esti) 2011/2012 őszi félév Számítógépes Grafika2. gyakorlat

  2. Utasítások • PImage: • .gif, .jpg, .tga és .png képek megjelenítését szolgáló osztály • A .width és .height mezők az adott kép szélességét és magasságát tárolják • A .pixels tömbje pedig a színeket

  3. Utasítások • loadImage(eleres): visszaad egy PImage-t, ami az első paraméterben megadott elérési útvonalon található (lehet URL is!) • image(img, x, y, width, height): kirajzol • Az img nevű PImage típusú képet kifeszíti az (x, y, width, height) által meghatározott téglalapra (ha kell nagyít/kicsinyít)

  4. Utasítások • A pixels[] tömb használata a következő: • Először img.loadPixels() függvényhívás kell, ami feltölti a pixels[] tömböt • Utána használhatjuk a img.pixels[]-t a kép pixeleinek lekérdezésére és módosítására (1D-s a tömb!) • Végül ha módosításokat végeztünk, akkor img.updatePixels()-t kell hívnunk

  5. Példa • PImage i ; • void setup() { • size(600,600) ; • i = loadImage("http://hapakj.web.elte.hu/szgesti/images/elte.png") ; • } • void draw() { • image(i,10,10) ; • }

  6. Feladat 1 • Töltsetek be egy tetszőleges képet a netről • Bal kattintás jelölje ki a kép bal felső pozícióját • Jobb kattintás pedig a jobb alsót

  7. Adatszerkezetek • A Processing támogatja alapból a következő tároló típusokat: • ArrayList • HashMap • Array • stb… • Használatuk a Java referencia szerint

  8. Adatszerkezetek • PVector: • 2 vagy 3 dimenziós vektor • Adatmezők: x, y, z • Eljárások: set(), get(), mag(), add(), sub(), normalize(), …

  9. ArrayList példa ArrayList al = newArrayList(); al.add(newPVector(3, 2)); al.add(newPVector(35, 22)); for (int i=0; i<al.size(); ++i) { PVector p = (PVector)al.get(i); print(p); }

  10. Feladat 2 • Írjuk programot, ami minden bal egérgombbal történő kattintást rögzít és hozzáadja egy listához. • Minden ponthármasra rajzoljunk ki egy háromszöget.

  11. Fájl output • PrintWriter: • Fájlba kiírásra • Használat: StreamWriter w = createWriter(“file.txt”); • Eljárások: • print() • println() • flush() • close()

  12. Fájl input • String[] loadStrings(<file_name>): • Betölti a paraméterben kapott fájlt soronként, visszaadja a beolvasás eredményét • Használat: • String lines[] = loadStrings("szoveg.txt");

  13. Szövegek feldolgozása • String[] split(str, delim): • String gy = "alma, korte”;String[] l = split(gy, ','); • String[] splitTokens(str, delims): • String gy = "alma, korte; eper”;String[] l = splitTokens(gy,“,;”);

  14. String osztály • Eljárások Java-ból ami ismerős: • substring(int fi, int li); • trim() • … • Számmá alakítás: • parseInt(s); • parseFloat(s);

  15. Feladat 3 • Az „s” billentyű lenyomására lehessen fájlba menteni az aktuális állapotot! • Az „l” billentyű segítségével pedig töltsük vissza a legutóbbit!

  16. Szövegkirajzolás • PFont: • A Processing karakterkészlet osztálya • Használat: PFont fnt = createFont("Arial", 12); • textFont(PFont): • Az aktuális kirajzolási karakterkészletet a paraméterben kapottra módosítja • text(str, x, y[, w, h, z]) • textSize(int)

  17. Szövegkirajzolás • textAlign(xAlign, yAlign): vízszintes és függőleges szövegigazítás, lehetséges értékei LEFT, CENTER, RIGHT • loadFont(fájlnév): külső fájlból tölthetünk be vele karaterkészletet PFontfnt = loadFont("font.flw");

  18. Példa void setup() { size(600,600); PFont fnt = createFont("Arial",20) ; textFont(fnt) ; } void draw() { text("Helló",100,100) ; }

  19. Feladat 4 • Minden kattintásra annak helyére írjátok ki a kattintás gombját és pozicióját.

  20. Osztályok • Osztályok definiálása szokásos módon: class OsztNev { void fv() {...} int i; }

  21. Osztályok • Az osztály egy példányának létrehozása szintén: OsztNevo = new OsztNev();

  22. Feladat • Írjatok egy PattogoKor osztályt! • Legyen szín és sugár jellemzője • Szóköz billentyű megnyomására jöjjön létre egy új pattogó kör, ami a képernyő keretein belül pattog! (véletlen sugár és szín attributumokkal) • NEHEZÍTÉS (Házi Feladat): A körök egymásról is pattanjanak vissza

  23. Feladat • Csináljunk egy Teglalap osztályt! Legyen pozíció és szélesség/magasság, szin adattagja • Szóköz lenyomására jelenjen meg egy a képernyőn (véletlen helyen, véletlen attributumokkal) • A téglalap közepére legyen beleírva színe RGB kódja, és a poziciója • A téglalap kirajzolásáért annak Draw() metódusa feleljen

  24. Feladat / Házi feladat • Jobb gombbal való kattintásra változzon a téglalap kapjon új véletlen színt • Bal egérgombbal lehessen a kiválasztott téglalapot előtérbe hozni • Legyen lehetőség a bal egérgombbal a téglalap vonszolására • Törekedjetek az OOP elvű megvalósításra!

More Related