1 / 12

Plan Prezentacji

Plan Prezentacji. Wczytywanie grafiki Wyświetlanie obrazów Podwójne buforowanie, Dźwięki w apletach Wątki i procesy Stany wątku Klasa Thread Synchronizacja i priorytety wątków Obsługa wyjątków. Wczytywanie grafiki.

calida
Download Presentation

Plan Prezentacji

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. Plan Prezentacji • Wczytywanie grafiki • Wyświetlanie obrazów • Podwójne buforowanie, • Dźwięki w apletach • Wątki i procesy • Stany wątku • Klasa Thread • Synchronizacja i priorytety wątków • Obsługa wyjątków

  2. Wczytywanie grafiki • Obrazy zapisane w postaci plików na dysku lub w Internecie można wczytać do aplikacji w Javie i wyświetlić na obiektach Graphics. Jeśli obraz znajduje się na dysku lokalnym, należy zastosować poniższą procedurę: Stringfilename = "...": Imageimage = lmageI0.read(new File(filename)):

  3. Wczytywanie grafiki • W przypadku obrazu z adresu URL: • String urlname = "..." • Image image = ImageI0.read(new URL(urlname)): • Metoda read powoduje wyjątek l0Excepti on, jeśli obraz jest niedostępny.

  4. Wyświetlanie obrazów • Aby wyświetlić obraz, można skorzystać z metody: • booleandrawImage(Imageimg, int x, int y, ImageObserverobserver) • Rysuje obraz w naturalnym rozmiarze.

  5. Wyświetlanie obrazów • Lub: • booleandrawImage(Imageimg, int x, int y, intwidth, intheight, ImageObserverobserver) • Rysuje obraz o zmienionych wymiarach. System dopasowuje rozmiar obrazu do obszaru o podanej szerokości i wysokości

  6. Przykład import java.awt.*; import java.applet.*; public class ImageExample extends Applet {      Image moj_obraz;      moj_obraz = getImage(base,"przyklad.jpg"); public void paint(Graphics g)       { g.drawImage(my_gif,20,20,this); g.drawImage(my_gif,20,140,30,40,this);      } }

  7. Podwójne buforowanie • Wykonywanie wielu operacji graficznych może spowodować, że obraz będzie migotał. Aby tego uniknąć można zastosować technikę zwaną podwójnym buforowaniem. Polega ona na tym, aby zawartość okna najpierw narysować na obrazie(obiekcie typu Image) umieszczonym wpamięci, a następnie cały obraz przenieść na ekran.

  8. Przykład import java.applet.*; import java.awt.event.*; import java.awt.*; public classDoubleBufferingextendsAppletimplementsMouseMotionListener { GraphicsbufferGraphics; Imageoffscreen; Dimensiondim; intcurX, curY; public voidinit() { dim = getSize(); addMouseMotionListener(this); setBackground(Color.black); offscreen = createImage(dim.width,dim.height); bufferGraphics = offscreen.getGraphics(); }

  9. Przykład cd. public voidpaint(Graphics g) { bufferGraphics.clearRect(0,0,dim.width,dim.width); bufferGraphics.setColor(Color.red); bufferGraphics.drawString("Double-buffered",10,10); bufferGraphics.fillRect(curX,curY,20,20); g.drawImage(offscreen,0,0,this); } public voidupdate(Graphics g) { paint(g); } public voidmouseMoved(MouseEventevt) { curX = evt.getX(); curY = evt.getY(); repaint(); } public voidmouseDragged(MouseEventevt){} }

  10. Przykład cd. http://sirius.cs.put.poznan.pl/~inf100260/applets/

  11. Dźwięki import java.applet.*; import java.awt.event.*; import java.awt.*; public classPrzykladowyDzwiekextendsAppletimplementsMouseListener { AudioClipdzwiek; public voidinit() { dzwiek = getAudioClip(getDocumentBase(),"pliczek.wav"); addMouseListener(this); setBackground(Color.pink); } public voidpaint(Graphics g) { g.drawString("Kliknij by usłyszeć dzwięk",20,20); } public voidmouseClicked(MouseEventevt) { dzwiek.play(); } // Oczywiście trzeba dodać jeszcze niezbędne metody obsługi kliknięć }

  12. Dźwięki • Klasa AudioClip dostarczanastępujące metody:  • public abstract void play()  - zagranie dźwięku raz • public abstract void loop()  - granie w pętli • public abstract void stop()  - zatrzymanie grania dźwięku

More Related