DVG3 - Bilder IMAGES (Bilder) Vortrag : Ronny Kuhnert am 9. November 1999.

Slides:



Advertisements
Ähnliche Präsentationen
programmiert April-Juni 2003 von Knut Riechmann
Advertisements

der Universität Oldenburg
der Universität Oldenburg
Objektorientierte Programmierung
der Universität Oldenburg
Präsentation PS: Klasse File von Janko Lange, Thomas Lung, Dennis Förster, Martin Hiller, Björn Schöbel.
Strategie (Strategy / Policy) Ein objektbasiertes Verhaltensmuster Stephan Munkelt, Stefan Salzmann - 03IN.
DVG Dateien Dateien. DVG Dateien 2 Die Klasse File Die Klasse File stellt die Verbindung zwischen dem Filesystem des Rechners und dem.
Ein Beispiel in Java.
10 Streams JavaHS Merseburg WS 05/06 E/A - Ströme (Streams) in Java.
Abstrakte Klassen HS Merseburg (FH) WS 06/07.
Ausnahmen HS Merseburg (FH) WS 06/07.
Java: Programmierung grafischer Oberflächen
Java: Programmierung grafischer Oberflächen
Java: Dynamische Datentypen
Java: Grundlagen der Objektorientierung
FH-Hof Fehlerbehandlung Richard Göbel. FH-Hof Konzept Fehler können mit dem Operator throw einer übergeordneten Funktion signalisiert werden. Parameter.
Abstrakte Klassen.
Wie überwacht man Objekte im "Alltag" ?. Indem man "Wanzen" an diese anbringt.
Ein Beispiel in Java.
Konstruktoren.
Objekte und Arbeitsspeicher
Benötigte Applets Startseite: in HTML-Format Applet auf der Startseite Das Applet, das auf der Startseite geladen wird, wird die vier Buttons und die eine.
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 7 User Interfaces in Java Sommersemester 2003 Lars Bernard.
Java-Kurs Grafik Julian Drerup.
Programmieren mit JAVA
Programmieren mit JAVA Teil V. Grafikausgabe mit JAVA, das AWT Java wurde von Anfang an mit dem Anspruch entwickelt, ein vielseitiges, aber einfach zu.
Programmieren mit JAVA
1DVG3 - Eventbehandlung Eventbehandlung. DVG3 - Eventbehandlung 2 Events Events sind externe Ereignisse, die parallel zum normalen Programmablauf auftreten.
Packages Vortrag : Cornelia Hardt 23. November 1999.
1DVG3 - Paint Paint ein Zeichenprogramm. DVG3 - Paint 2 Paint – ein Zeichenprogramm.
1 Animation (Doublepuffering) Vorlesung: Datenverarbeitung Grundlagen 3 Fachbereich II - Mathematik Rolf Heitzenröder.
DVG1 - Applets1 Applets. DVG1 - Applets2 Die Klasse Applet n Applets sind Grafikobjekte, die unter Steuerung eines anderen Programms (z.B. eines Browsers,
1DVG3 - anonyme Klassen Anonyme Klassen. DVG3 - anonyme Klassen 2 Syntax new BasisKlasse(Parameterliste) { Modifikationen und Erweiterungen der Basisklasse.
UNDO & SELECT Vortrag : Martin Hiersche
DVG Kommentare1 Kommentare. DVG Kommentare 2 Kommentare Es gibt zwei Arten von Kommentaren: einzeilige Kommentare // der Kommentar geht.
DVG Einführung in Java1 Einführung in JAVA.
07-GraphischeObjekte Graphische Objekte in EMMA301Paint.
DVG Klassen und Objekte
EDV Parallelprogrammierung1 Parallelprogrammierung mit JAVA.
12-Drucken Drucken in JAVA. 12-Drucken2 Probleme beim Drucken: Es können nur graphische Informationen gedruckt werden. Die zu druckende Information muss.
DVG Kommentare 1 Kommentare. 2 Kommentare Es gibt zwei Arten von Kommentaren: einzeilige Kommentare // der Kommentar geht bis zum Ende der Zeile.
DVG Graphik in Swing Graphik in Swing. DVG Graphik in Swing 2 Zeichnen von Objekten in Swing Die Klasse JComponent enthält die Methode.
© 2005 Pohlig - Taulien Datenströme GK Informatik 1 Datenströme.
© 2002 Dr. Cavelius - Ley - Pohlig - Taulien Step by step zum JFrame 1 Zum JFrame Step by step by step by step by step by step by step by step by.
© 2005 Pohlig GK Informatik K Zum JFrame Step by step by step by step by step by step by step by step by.
© 2006 MPohlig Grundkurs Informatik mit Java 1 JFrame-Vorlage Step by step by step by step by step by step by step by step by.
FH-Hof Java2D - Grundlagen Richard Göbel. FH-Hof Java2D - Funktionen Java2D unterstützt: das Zeichnen von Grafiken die Darstellung von Texten die Darstellung.
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
Sommersemester 2004 Jan Drewnak Entwicklung und Einsatz von Geosoftware I Praktikum Sitzung 7 Sitzung 7: User Interfaces in Java.
AWT und JFC Abstract Windowing Toolkit
Java: Programmierung grafischer Oberflächen
CuP - Java Elfte Vorlesung Montag, 11. November 2002.
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Programmierpraktikum Java SS 2005
Java-AG Benutzeroberflächen Juni 2001 Michael Haas.
CuP - Java Achzehnte (und LETZTE. ) Vorlesung : 1
Learning By Doing Parallelverarbeitung Multithreading (Nebenläufigkeit) Alte Idee der Parallelverarbeitung statt rein sequentieller Prozesse Parallelverarbeitung.
Lind 02/2005 Einführung in JAVA. Lind 02/2005 Beispiel: Mittelwert Es soll ein Programm erstellt werden, das den Mittelwert zweier reeller Zahlen berechnet.
Programmiervorkurs WS 2014/15 Methoden
Programmiervorkurs WS 2014/15 Instanzmethoden
Voyager Eigenschaften/Vorzüge Universalität: –ROI-Modelle: CORBA, RMI, DCOM –verschiedene Namens-, Verzeichnisdienste Nachrichtentypen: synchron, oneway,
Informatik I : Software höhere Programmiersprachen Java Klassen: hat Methoden (Funktionen) und Daten (Variablen) es kann mehrere Klassen geben nur eine.
© 2005 Pohlig Informatik Jg. 11 mfH Michael Pohlig 1 Zum JFrame Step by step by step by step by step by step by step by step by.
Java-Kurs Übung Benutzeroberflächen und Graphik Frames (Fenster)
GUI Programmierung in Java Branimir Djordjevic. GUI - Wichtige Begriffe -  Die Swing-Bibliothek in Java stellt zum Beispiel die folgenden Windows zur.
Graphics Klasse, die alle grundlegenden Methoden zum Zeichnen und Schreiben bereitstellt (draw -Methoden, Methoden zu Fonts und Colors) Bereitstellung.
Vererbung in Java. public abstract class Form { protected int breite; protected int hoehe; protected String farbe; /** * Erzeuge eine Form der Breite.
Java-Kurs Übung Grafik in Java - das Abstract Windowing Toolkit
Java-Kurs Übung Klassen und Objekte: Vererbung (Fortsetzung)
 Präsentation transkript:

DVG3 - Bilder IMAGES (Bilder) Vortrag : Ronny Kuhnert am 9. November 1999

DVG3 - Bilder Die abstrakte Klasse Toolkit definiert die Schnittstelle für Implementierungen des AWT. n Methoden der Klasse Toolkit n public abstract Image createImage(String filename) –Liefert ein Bild, das aus der durch filename bezeichneten Datei geladen wird. Das geladene Bild wird nicht in einem Cache gehalten. Die Daten werden bei jedem Aufruf erneut gelesen. n public abstract Image createImage(URL url) –Bei dieser Variante wird das Bild von der übergebenen URL geladen. n public abstract Image createImage(ImageProducer producer) –Erzeugt ein Offscreen-Image, dessen Pixel-Daten von producer bezogen werden. Abstrakte Klasse Toolkit

DVG3 - Bilder n public abstract Image getImage(String filename) – Liefert ein Bild, das aus der durch filename bezeichneten Datei geladen wird. Hierbei wird das erzeugte Bild in einem Cache gehalten, um künftige Anfragen für dasselbe Bild schneller bedienen zu können. Wenn ein Bild nur einmal benötigt wird, sind die createImage()-Methoden vorzuziehen, die kein Caching betreiben.() n public abstract Image getImage(URL url) – Bei dieser Variante wird das Bild von der übergebenen URL geladen. n public static synchronized Toolkit getDefaultToolkit() – Liefert das standardmäßige grafische Toolkit, mit dem die Komponenten dargestellt werden. Der Standardwert ist durch die Property awt.toolkit festgelegt.

DVG3 - Bilder Abstrakte Klasse Graphics n Methoden der Klasse Graphics n public abstract boolean drawImage(Image img, int x, int y, ImageObserver observer) –Gibt das Bild img an der durch x und y bezeichneten Position aus. observer ist das zu img gehörige Überwachungsobjekt. Für observer wird meist die Komponente übergeben, in der das Bild ausgegeben wird. Der Rückgabewert ist true, wenn das Bild zum Aufrufzeitpunkt bereits vollständig aufbereitet war, sonst false. n public abstract boolean drawImage(Image img, int x, int y, int width, int height, ImageObserver observer) –Diese Variante erlaubt zusätzlich eine Skalierung des Bildes

DVG3 - Bilder n import java.awt.*; n class Bild1 extends Frame n { n Image bild= Toolkit.getDefaultToolkit().getImage("BILD.jpg"); n public static void main(String[] args) n { n Bild1b=new Bild1("Bild"); n } n Bild1(String title) n { n super(title); n setBounds(50,50,300,300); n setVisible(true); n } n public void paint(Graphics g) n { n g.drawImage(bild, 10, 10,300,200,this); n }

DVG3 - Bilder Klasse MediaTracker Die Klasse MediaTracker dient dazu, den Verarbeitungsstatus von Medien zu überwachen. Als Medien gelten prinzipiell sowohl Bilder als auch Audiosequenzen. Implementiert sind allerdings nur die erforderlichen Methoden für Bilder. Hierbei können mehrere Medien einer bestimmten ID-Nummer zugeordnet werden. Über diese ID kann dann der Status der gesamten Mediensequenz abgefragt werden. n Konstruktor der Klasse MediaTracker n public MediaTracker(Component comp) –Erzeugt ein neues Exemplar von MediaTracker, das die Bildsequenzen auf der Komponente comp ausgibt

DVG3 - Bilder Methoden der Klasse MediaTracker n public void addImage(Image image, int id) – Fügt das Bild image zu der Liste der unter der Nummer id überwachten Bilder hinzu. n public void waitForAll() – Startet den Ladevorgang für alle registrierten Medien und blockiert, bis er beendet ist. Nach der Rückkehr dieser Methode kann mit isErrorAny() festgestellt werden, ob bei einem Medium ein Fehler aufgetreten ist. n Exception: InterruptedException Falls während der Wartezeit eine Unterbrechung durch einen anderen Thread eintritt. n public void waitForID(int id) – Startet den Ladevorgang für alle unter der Nummer id registrierten Medien und blockiert, bis er beendet ist. Nach der Rückkehr dieser Methode kann mit isErrorID() festgestellt werden, ob bei einem Medium ein Fehler aufgetreten ist.

DVG3 - Bilder n public synchronized boolean isErrorID(int id) – Liefert true, wenn mindestens eines der unter der Nummer id registrierten Medien beim Aufbereiten einen Fehler verursacht hat, oder false, wenn alle Medien erfolgreich aufbereitet werden konnten. n public synchronized void removeImage(Image image) – Entfernt das Bild image aus der Liste der überwachten Objekte. Falls das Bild unter mehreren IDs registriert ist, wird es überall entfernt. n public synchronized void removeImage(Image image, int id) – Entfernt das Bild image aus der Liste der überwachten Objekte für die ID id. Falls das Bild unter mehreren IDs registriert ist, bleiben die weiteren Registrierungen unberührt.

DVG3 - Bilder n public void mediaTracker() n { n n MediaTracker tracker = new MediaTracker(this); n tracker.addImage(bild,1); n n try { n tracker.waitForID(1); n } n catch (InterruptedException e) { n System.err.println("Error: "+e); n }

DVG3 - Bilder Klasse PixelGrabber n Mit der Klasse PixelGrabber ist es möglich, einen Ausschnitt eines Bildes zu kopieren. Das Bild muß hierbei in Form eines Image-Objekts vorliegen. Der Ausschnitt wird über seine Breite und Höhe sowie seine linke obere Ecke festgelegt. Über die Parameter offset und scansize der Konstruktoren ist es möglich, durch aufeinanderfolgende Aufrufe von grabPixels() ein Bild aus mehreren Teilbildern zusammenzusetzen oder zu überlagern. offset legt den Startindex fest, ab dem die Pixel im Puffer-Array gespeichert werden, und scansize ist die Pixel-Anzahl, um die die einzelnen Zeilen versetzt im Puffer gespeichert werden. Normalerweise wird scansize auf die Breite des gewünschten Ausschnitts gesetzt. Wenn scansize dagegen größer als die Breite ist, bleiben die überzähligen Spalten im Puffer unverändert.

DVG3 - Bilder n Konstruktoren n public PixelGrabber(Image img, int x, int y, int w, int h, boolean forceRGB) – Erzeugt ein neues PixelGrabber-Objekt, mit dem ein Ausschnitt der Breite w, der Höhe h und der durch x und y festgelegten oberen linken Ecke ausgeschnitten werden kann. Die Bilddaten werden hierbei aus dem Image-Objekt img bezogen. Wenn forceRGB true ist, wird das voreingestellte RGB-Farbmodell zugrunde gelegt. Andernfalls wird das Farbmodell des Bildes übernommen. n Methoden n public boolean grabPixels() – Versucht, die Pixel zu kopieren, und liefert true, wenn der Versuch erfolgreich war, oder false, wenn ein Fehler aufgetreten oder wenn eine Unterbrechung durch einen anderen Thread eingetreten ist. Diese Methode blockiert so lange, bis entweder der Kopiervorgang beendet oder ein Fehler aufgetreten ist. – Exception: InterruptedException Falls während des Kopiervorgangs eine Unterbrechung durch einen anderen Thread eingetreten ist.

DVG3 - Bilder n public synchronized boolean grabPixels(long ms) – Zusätzlich zur vorhergehenden Variante kann ein Timeout angegeben werden, in dem der Kopiervorgang abgeschlossen sein muß. Falls der Timeout vorher abläuft, wird auch false zurückgegeben. – Exception: InterruptedException Falls während des Kopiervorgangs eine Unterbrechung durch einen anderen Thread eingetreten ist. n public synchronized void imageComplete(int status) – Wird aufgerufen, um den Aufbereitungsstatus des Bildes zu melden.

DVG3 - Bilder Klasse MemoryImageSource MemoryImageSource ist ein ImageProducer, der seine Bilddaten aus einem int- oder byte-Array bezieht, das dem Konstruktor übergeben wird. Mit der Methode createImage(), die Component und alle ihre Unterklassen besitzen, können die Bilddaten dann in ein Exemplar von Image gewandelt werden. Seit Version 1.1 werden auch animierte Bilder unterstützt. Konstruktor der Klasse MemoryImageSorce n public MemoryImageSource(int w, int h, int[] pix, int off, int scan) –Erzeugt ein neues Exemplar von MemoryImageSource, das aus dem int-Array pix ein Bild der Breite w Pixel und der Höhe h Pixel erzeugt. Die Pixel-Daten werden ab dem Index off ausgelesen, wobei angenommen wird, daß jede Pixel-Zeile in pix um scan Indexpositionen versetzt ist. Per Voreinstellung wird ein RGB- Farbmodell verwendet.

DVG3 - Bilder Abstrakte Klasse Image Die abstrakte Klasse Image stellt eine allgemeine Schnittstelle für Bilddaten dar. Sie wird plattformabhängig implemeniert. Methoden der Klasse Image public abstract Graphics getGraphics() –Liefert einen grafischen Kontext, in den dieses Bild gezeichnet werden kann. Funktioniert nur bei Offscreen-Images.

DVG3 - Bilder public abstract int getHeight(ImageObserver observer) Ermittelt über den übergebenen observer die Höhe des Bildes in Pixeln und liefert sie zurück. Falls der Observer die Höhe bisher noch nicht ermitteln konnte, wird -1 zurückgegeben. public abstract int getWidth(ImageObserver observer) Ermittelt über den übergebenen observer die Breite des Bildes in Pixeln und liefert sie zurück. Falls der Observer die Höhe bisher noch nicht ermitteln konnte, wird -1 zurückgegeben.

DVG3 - Bilder n import java.awt.*; n import java.awt.image.*; n class Bild3 extends Frame n { n Image bild1; n Image bild=Toolkit.getDefaultToolkit().getImage("BILD.jpg"); n int bwidth; n int bheight; n int []pix; n MemoryImageSource b1; n public static void main(String[] args) n { n Bild3 b=new Bild3("Bild"); n }

DVG3 - Bilder n Bild3(String title) n { n super(title); n setBounds(0,50,650,300); n setLayout(new FlowLayout()); n mediaTracker(); n grab(bild,pix); n mis(); n Canvas c1=new Canvas() n { n public void paint(Graphics g) n { n g.drawImage(bild, 0,0,300,200,this); n } n }; n c1.setBounds(0,0,300,200); n add(c1); n

DVG3 - Bilder n Canvas c2=new Canvas() n { n public void paint(Graphics g) n { n n g.drawImage(bild1, 0, 0,300,200,this); n } n }; n c2.setBounds(0,0,300,200); n add(c2); n setVisible(true); n } n n public void mediaTracker() n { n MediaTracker tracker = new MediaTracker(this); n tracker.addImage(bild,1); n

DVG3 - Bilder n try n { n tracker.waitForID(1); n } n catch (InterruptedException e) n { n System.err.println("Error: "+e); n } n bwidth=bild.getWidth(this); n bheight=bild.getHeight(this); n pix=new int[bwidth*bheight]; n } n public void grab(Image img, int []pix) { n // Kopiert die Bilddaten des übergebenen n // Bildes in das übergebene Array n PixelGrabber grabber = n new PixelGrabber(img, 0, 0, bwidth, bheight, pix, 0, bwidth); n

DVG3 - Bilder n try n { n grabber.grabPixels(); n } n catch (InterruptedException e) n { n e.printStackTrace(); n } n public void mis() n { n b1= new MemoryImageSource(bwidth, bheight, pix,0,bwidth ); n bild1=Toolkit.getDefaultToolkit().createImage(b1); n }

DVG3 - Bilder Klasse FileDialog n Die Klasse FileDialog implementiert einen Dialog, mit dem Dateien ausgewählt werden können. Der FileDialog kennt zwei Modi: LOAD, um Dateien zum Laden zu selektieren, und SAVE, um Dateien zu speichern. Es kann ein Filter für die anzuzeigenden Dateinamen gesetzt werden, so daß nur die Dateien angezeigt werden, deren Name auf den Filter paßt. Der FileDialog ist grundsätzlich modal. Abgeleitet von Dialog->Window->Container->Component n Konstruktoren der Klasse FileDialog n public FileDialog(Frame parent) –Erzeugt einen neuen FileDialog, um Dateien zu laden. Der Dialog erhält in der Fensterhierarchie den Vorfahr parent und einen leeren Titel.

DVG3 - Bilder n public FileDialog(Frame parent, String title) – Erzeugt einen neuen FileDialog, um Dateien zu laden. Der Dialog erhält in der Fensterhierarchie den Vorfahr parent und den Titel title. n Methoden der Klasse FileDialog n public String getDirectory() – Liefert das selektierte Verzeichnis des Dialogs. n public String getFile() – Liefert den selektierten Dateinamen nach Beendigung des Dialogs. n public FilenameFilter getFilenameFilter() – Liefert den momentanen Dateinamensfilter. n public int getMode() – Liefert den Modus des Dialogs (LOAD/SAVE). n public synchronized void setDirectory(String dir) – Setzt das Arbeitsverzeichnis des Dialogs auf dir.

DVG3 - Bilder n public synchronized void setFile(String file) – Setzt die Datei des Dialogs auf file. n public synchronized void setFilenameFilter(FilenameFilter filter) – Setzt einen neuen Filter für die Dateinamen. Es werden nur die Dateien angezeigt, deren Name auf der in filter eingetragenen Zeichenkette paßt. filter ist hierbei eine Implementierung des Interface util.FilenameFilter. In dessen Methode accept muß das gewünschte Verhalten implementiert werden. n public void setMode(int mode) – Setzt den Modus des Dialogs auf mode.

DVG3 - Bilder n import java.awt.*; n import java.awt.event.*; n public class FDialog extends Frame implements ActionListener n { n FileDialog filedialog; n Button open; n Label l=new Label("File= "); n public static void main(String[] args) n { n Frame f=new FDialog(); n } n FDialog() n { n open=new Button("OPEN"); n setLayout(new BorderLayout()); n Panel p = new Panel(); n p.add(open); n p.add(l); n

DVG3 - Bilder n open.addActionListener(this); n add(p,BorderLayout.CENTER); n setSize(200,100); n setVisible(true); n } n public void actionPerformed(ActionEvent e) n { n FileDia(); n } n public void FileDia() n { n filedialog=new FileDialog(this,"openFile"); n filedialog.setDirectory("c:"); n filedialog.show(); n System.out.println(filedialog.getDirectory()+filedialog.getFile()); n l.setText("File="+filedialog.getFile()); n }