Kapitel 10: "Appletprogrammierung"

"BildUndStrukturFlackernGhost.java"


import java.applet.*;
import java.awt.*;
import java.awt.event.*;
import java.net.URL;
import java.lang.Math;
import java.util.Random;

/* Bild als Hintergrund und mausempfindliche Linienstruktur im
Vordergrund erzeugt unangenehmes Flackern, trotz Ghostimage!
*/

public class BildUndStrukturFlackernGhost extends Applet {
int width, height, mx, my, counter=0;
final int N=100;
Point[] points;
Image img;

// +++++++++++++++++++
Image img_ghost;
Graphics g_ghost;
// +++++++++++++++++++

Random r;

public void init() {
width = getSize().width;
height = getSize().height;
setBackground(Color.black);

// Mauskoordinaten und MouseMotionListener
addMouseMotionListener(new MouseMotionHelper());

img = getImage(getDocumentBase(), "fractalkohl.jpg");

// +++++++++++++++++++
img_ghost = createImage(width, height);
g_ghost = img_ghost.getGraphics();
// +++++++++++++++++++

r = new Random();
}

// *************************************************************
// Klassenmethoden
private void zeichneLinien(Graphics g){
for (int i=1; i < N; i++) {
// wähle zufällige Farbe
g.setColor(new Color(r.nextInt(256),
r.nextInt(256),
r.nextInt(256)));

// verbinde N zufällig erzeugte Punkte
g.drawLine(mx+(int)((r.nextFloat()-0.2)*(width /2)),
my+(int)((r.nextFloat()-0.2)*(height/2)),
mx+(int)((r.nextFloat()-0.2)*(width /2)),
my+(int)((r.nextFloat()-0.2)*(height/2)));
}
}

private void zeichneBild(Graphics g){
g.drawImage(img, 0, 0, this);
}
// *************************************************************

// *************************************************************
private class MouseMotionHelper extends MouseMotionAdapter{
// Maus wird innerhalb der Appletflaeche bewegt
public void mouseMoved(MouseEvent e) {
mx = e.getX();
my = e.getY();
showStatus("Mauskoordinaten(x="+mx+", y="+my+")
Counter:"
+counter);
// ruft die paint-Methode auf
repaint();
e.consume();
}
}
// *************************************************************

public void paint(Graphics g) {
zeichneBild(g_ghost);
zeichneLinien(g_ghost);

// +++++++++++++++++++
g.drawImage(img_ghost, 0, 0, this);
// +++++++++++++++++++

counter++;
}
}

Picksel Media Marco Block © 2006-2009 – ImpressumKontakt
Gestaltung und Umsetzung Tobias Losch, www.picksel-media.de