Gegeben ist ein Path-Objekt mit folgender Beschreibung des Hauses vom Nikolaus:

Ähnliche Dokumente
84 Wie kann ich einfache Strukturen zeichnen?

11. GUI-Programmierung mit SWING Überblick

Softwaretechnik (Medieninformatik): GUIs mit Swing Überblick

Konzepte objektorientierter Programmierung

Zeichnen und animieren

Graphische Benutzungsoberflächen

B2. 2D-Computergrafik mit Java

Images. Kommen auf zweierlei Weise zur Anwendung. Darstellung von Pixelbildern(.jpg,.gif,.png) Bilden die Grundlage für Offscreendrawing

JAVA2D OKTOBER package at.ac.wuwien.examples.swingdemo; 3 import javax.swing.*; 5 public class SimpleGUI extends JFrame {

Informatik II. Aufgabe 1: Image Viewer ImageViewer.java

double size[][] = {{10.0, 400.0, 20.0, 160.0, 20.0, 400.0, 10.0}, // Columns {10.0, 500.0, 20.0, 180.0, 10.0}}; // Rows

Abteilung Informatik, JFC/Swing 2004 Diego Schmidlin V2.2

(C) Sortieren und Suchen mit Java.-AWT Seite 1

Lösungen. 1. Aufgabe. // ActionExample.java import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.event.

Speichern der Benutzereinstellungen

Observer-Beispiel. Observer-Beispiel

JAVA 3. Arbeitsblätter für die Lehrveranstaltung OOP. III. Applets und JavaScript. Das Applet-Tag:

'($)*'+ $, *$+*$'- $..$+/, 01.2$, 2*$0, - $'($)*'+ $, *$+*$

Grafikprogrammierung mit Java Teil 1/2

Anweisungen zur Ablaufsteuerung

Klausur zur Informatik A WS 2001/2002 Name: Korrektor: Punkte: a) Zeichnen Sie zu der nachstehenden Syntax in EBNF die passenden Syntaxdiagramme.

Musterübung 09: Vererbung und Dynamische Bindung

Computergrafik. Kapitel 2: Grundlagen der 2D-Grafik SS Prof. Dr. Thomas Wieland

Grafikausgabe mit dem Abstract- Windowing-Toolkit. Eine Einführung

Grundlagen der Programmierung (GP) Prof. Dr. H. Schlingloff Joachim Hänsel

Aufgabe 1: Objekte, Klassen, Vererbung (15 Punkte)

Plotten von Kreisen ( nach Jack Bresenham ) (C) Ac bis

Programmieren in Java

Probeklausur Informatik 2 Sommersemester 2013

Graphische Nutzerschnittstellen

Grundlagen der Informatik für Ingenieure I

Objektorientierte Software-Entwicklung

Graphische Nutzerschnittstellen

Objektorientierte Programmierung OOP Objektorientierte Programmierung (OOP) mit Java

Universität Paderborn Prof. Dr. Stefan Böttcher. Abschluss von Kapitel 2: Programmierung Grafischer Oberflächen mit der Swing-Bibliothek

Lesen Sie zuerst die Hinweise auf der Rückseite!

Universität Karlsruhe (TH)

B2. 2D-Computergrafik mit Java

Aufgabe 5.1 (Laboraufgabe, Nocheinmal ein wenig Graphik)

GUI-Programmierung. Teil I. Unterlagen zum Modul OOP mit Java V by MOU2/BFH-TI. Berner Fachhochschule Technik und Informatik

Grafik mit Java Ac

Auswahl aus mehreren Alternativen:

1. Konventionelle Ein-/Ausgabebetonte Programmierung

Appletprogrammierung

Kapitel X - Zeichnen mit Java2D

Übung Nr. 20 Freitag, 09:00-11:00 Uhr in E3.301

import java.applet.applet; import java.awt.*; public class Grow extends Applet { public void start() { setbackground(color.orange); } public void

Darstellung eines Bildes

Softwaretechnik (Medieninformatik): GUIs mit Swing Überblick

Tag 9: Grafische Benutzeroberflächen

Übung 09: Vererbung und Dynamische Bindung

Praktikum Informatik II Prof. Dr. Martin Trauth, Dr. Michael Männel

Objektorientierung II & die Java Klassenbibliothek. Kristian Bergmann und Arthur Lochstampfer

DHBW Karlsruhe, Angewandte Informatik Programmieren in JAVA W. Geiger, T. Schlachter, C. Schmitt, W.

Lesen Sie zuerst die Hinweise auf der Rückseite!

Dr. Monika Meiler. Inhalt

// compiliert, aber Programmabbruch zur Laufzeit: einesuppe = ((EßbarerPilz)einPilz).kochen();

Kurs: Programmieren in Java

Programmiermethodik Objektorientierte Programmierung SS 2002

Klausur vom 14. Juni Informatik 4

Einstieg in die Informatik mit Java

Kurzanleitung RMI-Beispiel: gettime Seite 1 / 7. RMI Projekt gettime 1

8.6 Visualisierung der Sortieralgorithmen

Praktikum 4: Grafiken und Ereignisse

Institut für Informatik

Einstieg in die Informatik mit Java

FAKULTÄT FÜR INFORMATIK

Ereignisverwaltung und Layout-Typen

Grundlagen der Objektorientierung

Programmieren 2 Selbststudium Semesterwoche 4

Schablonen für Klassen, Interfaces oder Methoden, die noch nicht festgelegte Datentypen verwenden

CoMa 04. Java II. Paul Boeck. 7. Mai Humboldt Universität zu Berlin Institut für Mathematik. Paul Boeck CoMa 04 7.

Übungsstunde 10. Einführung in die Programmierung I

Programmieren II. Zeichnen in Swing-Komponenten. Heusch 18 Ratz Institut für Angewandte Informatik

Beispiele für Ausdrücke. Der imperative Kern. Der imperative Kern. Imperativer Kern - Kontrollstrukturen. Deklarationen mit Initialisierung

GUI Programmierung mit JAVA Swing

Kapitel 13. Abstrakte Methoden und Interfaces. Fachgebiet Knowledge Engineering Prof. Dr. Johannes Fürnkranz

Objektorientierte Programmierung

15. Ereignisse (Events)

Hauptklausur: PRGII MD

Abstrakte Klassen, Interfaces

11. GUI-Programmierung mit SWING Überblick

AK-Automatisierungs und Kommunikationstechnik TI Technische Informatik. NWT Netzwerktechnik

Java Game Development Fabian Birzele Programmierpraktikum 2008 / 2009

Ein Manager mit CardLayout layout/cards.java

1 of :26:26

Java - Programmierung - Objektorientierte Programmierung 1

Dr. Monika Meiler. Inhalt

Objektorientierte Programmierung OOP Objektorientierte Programmierung (OOP) mit Java

Übungslösungen. 1. Übung

1. Typen und Literale (6 Punkte) 2. Zuweisungen (6 = Punkte)

Einführung in die Programmierung für Nebenfach Medieninformatik. Beat Rossmy, Michael Kirsch

2

Java - Programmierung - Prozedurale Programmierung 1

Objektorientierte Programmierung

Einführung in die Programmierung Lösungen P. Fierz / HS 2011/2012

Seite Architektur interaktiver Systeme. 7. Architektur interaktiver Systeme. 7.1 Entkopplung durch Sichten. Schichtenarchitektur

Informatik II Übung, Woche 17

Einführung in die Programmierung für Nebenfach Medieninformatik. Beat Rossmy, Michael Kirsch

Selbsteinstufungstest Vorkurs Programmieren

Transkript:

Lösungen 1. Aufgabe Gegeben ist ein Path-Objekt mit folgender Beschreibung des Hauses vom Nikolaus: 1. Implementiere die paint()-methode im Rahmen eines Applets. Führe das Applet aus und zeige über das Applet-Fenster) an, was vom Haus des Nikolaus aufgrund der angegenen Punkte (mit den Abmessungen des Hauses vom Nikolaus) zu sehen ist. 2. Verschiebe das Haus des Nikolaus um (100,100). // Transformation at.settotranslation(100.0f,100.0f); g2d.transform(at); 3

3. Zusätzlich zur Translation soll das Haus noch 45 Grad im Uhrzeigersinn gedreht werden // Transformation // Setzen der affinen Transformation at.settotranslation(100.0f,100.0f); // Erweitern der affinen Transformation at.rotate(math.pi/4); g2d.transform(at); 4. Die Geometrie zum Haus des Nikolaus soll um den Skalenfaktor 1.5 vergrößert werden. // Transformation // Setzen der affinen Transformation at.settotranslation(100.0f,100.0f); // Erweitern der affinen Transformation at.rotate(math.pi/4); // Skalieren at.scale(1.5f,1.5f); g2d.transform(at); // Zeichnen 5. Welcher unerwünschte Nebeneffekt ist dabei aufgetreten? Das Fenster zeigt: Die Skalierung in Java2D beeinflusst auch die Stroke- und Paint-Eigenschaften, d.h. bei einer Vergrößerung wird auch die Liniendicke größer. 4

2. Aufgabe Implementiere eine Applikation 2, die mit Hilfe von Java2D die folgenden geometrischen Formen erzeugt. Die dritte Figur von links zeigt eine Füllung über TexturePaint. import java.awt.event.*; import java.awt.image.*; public class PR43705 extends Frame public PR43705() super("zeichnen geometrischer Formen"); setsize(425,160); setbackground(color.lightgray); setvisible(true); g2d.setpaint(new GradientPaint(5,30, Color.blue, 35,100, Color.yellow, true)); g2d.fill(new Ellipse2D.Double(5,30,65,100)); g2d.setpaint(color.red); g2d.setstroke(new BasicStroke(10.0f)); g2d.draw(new Rectangle2D.Double(80,30,65,100)); BufferedImage buffimage = new BufferedImage(10,10,BufferedImage.TYPE_INT_RGB); Graphics2D gg = buffimage.creategraphics(); gg.setcolor(color.yellow); gg.fillrect(0,0,10,10); gg.setcolor( Color.black ); // draw in black gg.drawrect(1,1,6,6); // draw a rectangle gg.setcolor(color.blue ); // draw in blue gg.fillrect(1,1,3,3); // draw a filled rectangle gg.setcolor(color.red ); // draw in red gg.fillrect(4,4,3,3); // draw a filled rectangle // paint buffimage onto the Frame g2d.setpaint( new TexturePaint( buffimage, new Rectangle(10,10))); 2 pr43700 5

g2d.fill( new RoundRectangle2D.Double( 155, 30, 75, 100, 50, 50 )); // draw 2D pie-shaped arc in white g2d.setpaint( Color.white ); g2d.setstroke( new BasicStroke( 6.0f ) ); g2d.draw( new Arc2D.Double( 240, 30, 75, 100, 0, 270, Arc2D.PIE)); // draw 2D lines in green and yellow g2d.setpaint( Color.green ); g2d.draw( new Line2D.Double( 395, 30, 320, 150 ) ); float dashes[] = 10 ; g2d.setpaint( Color.yellow ); g2d.setstroke( new BasicStroke(4,BasicStroke.CAP_ROUND,BasicStroke.JOIN_ROUND, 10, dashes, 0 ) ); g2d.draw( new Line2D.Double( 320, 30, 395, 150 ) ); public static void main(string args[]) PR43705 app = new PR43705(); app.addwindowlistener(new WindowAdapter() public void windowclosing(windowevent e) System.exit(0); ); 6

3. Aufgabe Implementiere eine Applikation 3, die mit Java2D den folgenden Sternenkranz erzeugt. // Demonstrating a general path import java.awt.event.*; public class PR43706 extends Frame public PR43706() super( "Zeichnen Sternenkranz" ); setbackground( Color.yellow ); setsize( 400, 400 ); setvisible(true); public void paint( Graphics g ) int xpoints[] = 55, 67, 109, 73, 83, 55, 27, 37, 1, 43 ; int ypoints[] = 0, 36, 36, 54, 96, 72, 96, 54, 36, 36 ; Graphics2D g2d = ( Graphics2D ) g; // create a star from a series of points GeneralPath star = new GeneralPath(); // set the initial coordinate of the General Path star.moveto( xpoints[ 0 ], ypoints[ 0 ] ); // create the star--this does not draw the star for ( int k = 1; k < xpoints.length; k++ ) star.lineto( xpoints[ k ], ypoints[ k ] ); // close the shape star.closepath(); 3 pr43700 7

// translate the origin to (200, 200) g2d.translate( 200, 200 ); // rotate around origin and draw stars in random colors for ( int j = 1; j <= 20; j++ ) g2d.rotate( Math.PI / 10.0 ); g2d.setcolor( new Color( ( int ) ( Math.random() * 256 ), ( int ) ( Math.random() * 256 ), ( int ) ( Math.random() * 256 ) ) ); g2d.fill( star ); // draw a filled star public static void main( String args[] ) PR43706 app = new PR43706(); app.addwindowlistener( new WindowAdapter() public void windowclosing( WindowEvent e ) System.exit( 0 ); ); 4. Aufgabe: Animation mit Java2D 1. Zeichne mit Hilfe eines Applets 4 an den Koordinatenursprung ein rotes Rechteck (200 Pixel breit, 100 Pixel hoch), das nach rechts unten aus dem Fenster verschwindet. import java.applet.*; public class PR43700 extends Applet Rectangle2D.Float rechteck = new Rectangle2D.Float( 0.0f,0.0f,200.0f,100.0f); Stroke stroke = new BasicStroke(5.0f); g2d.setstroke(stroke); for (int i = 0;i < 100; i++) at.translate(10.0f,10.0f); g2d.settransform(at); g2d.setpaint(color.black); g2d.draw(rechteck); g2d.setpaint(color.red); g2d.fill(rechteck); try Thread.sleep(2000); catch(exception e) g2d.setpaint(color.white); g2d.draw(rechteck); g2d.fill(rechteck); 4 pr43700 8

2. Verbessere auftretendes Flimmern bei der Animation durch "Double Buffering". import java.applet.*; public class PR43701 extends java.applet.applet private Image memimage = null; public void createbuffer() Dimension d = getsize(); if ((memimage == null) (memimage.getwidth(null)!= d.width) (memimage.getheight(null)!= d.height)) memimage = createimage(d.width,d.height); Rectangle2D.Float rechteck = new Rectangle2D.Float( 0.0f,0.0f,200.0f,100.0f); Stroke stroke = new BasicStroke(5.0f); createbuffer(); Graphics2D g2m = (Graphics2D) memimage.getgraphics(); for (int i = 0;i < 100; i++) g2m.setcolor(getbackground()); // g2m.setstroke(stroke); g2m.fillrect(0,0,getsize().width,getsize().height); at.translate(2.0f,2.0f); g2m.settransform(at); g2m.setpaint(color.black); g2m.draw(rechteck); g2m.setpaint(color.red); g2m.fill(rechteck); g2d.drawimage(memimage,0,0,null); try Thread.sleep(2000); catch(exception e) 9