ERLEDIGT
NEIN
NEIN
ANTWORTEN
0
0
ZUGRIFFE
484
484
EMPFEHLEN
-
Hi Leute,
Ich soll ein Programm in MVC Struktur schreiben, welches mit der Mandelbrotmenge z.b. das Apfelmännchen zeichnet. (http://de.wikipedia.org/wiki/Mandelbrot-Menge).
Ich hab es endlich hinbekommen die GUI für das Zeichnen des Mandelbrot - Apfelmännchens zu erstellen.
Nun hab ich allerdings das Problem das Punkte, die in einem Schritt gezeichnet wurden im nächsten einfach wieder gelöscht werden und immer nur ein Punkt auf dem Canvas zu sehen ist. Ich vermute ja, dass das an der repaint() Methode liegt. Ich weß allerdings nicht, wie ich das beheben kann.
Hier der Ausschnitt des Codes des Canvas Elementes:
Code java:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
/** * Zeichnen eines Punktes in Abhängikeit, ob ein Punkt in der Mandelbrotmenge liegt * oder nicht und in welcher Iterationstiefe die Iteration abgebrochen wurde */ public void paint(Graphics g) { Color farbe = Color.white; int farbwahl; if(maxTiefe == iterationstiefe) farbe = Color.white; if(maxTiefe != iterationstiefe) { farbwahl = iterationstiefe%7; switch(farbwahl){ case 0: farbe = Color.yellow; break; case 1: farbe = Color.green; break; case 2: farbe = Color.red; break; case 3: farbe = Color.blue; break; case 4: farbe = Color.pink; break; case 5: farbe = Color.orange; break; case 6: farbe = Color.black; break; } } g.setColor(farbe); g.drawRect(x, y, 0, 0); } /** * Setzt die Koordinaten des Punktes und die Werte zur Berechnung der Farbe eines * Punktes neu und ruft die repaint() Methode auf * @param x x - Koordinate * @param y y - Koordinaten * @param maxTiefe Die maximale, vom Nutzer eingegebene, Iterationstiefe. * @param iterationstiefe Die Iterationstiefe, in welcher die Iteration angebrochen wurde */ public void setPixel(int x, int y, int maxTiefe, int iterationstiefe) { this.x = x; this.y = y; this.iterationstiefe = iterationstiefe; this.maxTiefe = maxTiefe; repaint(); }
Auszug aus dem View, der setPixel aufruft:
Code java:1 2 3 4 5 6 7 8
public void update(Observable m, Object o) { if(model == m) { canvasElement.setPixel(model.getX(), model.getY(),Integer.parseInt(getTFI()), model.getPunktSetzen()); } }
Auszug aus dem Model:
Code java:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
public void berechne() { //uebergabe der MbDaten an die MbBerechnung MbBerechnung.setMandelDaten(MbDaten); //---------------------------------------------------------------- //durchlauf der Y Koordinaten for(koordinateY = 0 ; koordinateY <= MbDaten.getHight(); koordinateY++) { //Ausfueren der Berechnung des Imaginaerteil fuer die Y Koordinate MbBerechnung.Imaginaerteil(koordinateY); //durchlauf der X Koordinaten for(koordinateX = 0 ; koordinateX <= MbDaten.getWidth(); koordinateX++) { //Ausfueren der Berechnung des Realteil fuer die X Koordinate MbBerechnung.Realteil(koordinateX); //Ausfueren der Berechnung der Iterationstiefe und deren Bestimmung punktSetzen = MbBerechnung.IterationsBerechnung(); //Test--------------------------------------------------------------------------------- System.out.println("Y : "+ koordinateY +" X : "+ koordinateX +" Tiefe: "+ punktSetzen ); ///------------------------------------------------------------------------------------*/ //ueberpruefung auf Verenderung der Iterationstiefe setChanged(); notifyObservers(new Integer(punktSetzen)); } }
Und zum Schluss noch ein Auszug aus dem Controller
:
Code java:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
public void actionPerformed(ActionEvent ae) { String command = ae.getActionCommand(); if(command.equals(view.ACTION_START)) { daten.setAA(Double.parseDouble(view.getTFCa_Real())); daten.setAE(Double.parseDouble(view.getTFCa_Imag())); daten.setBA(Double.parseDouble(view.getTFCb_Real())); daten.setBE(Double.parseDouble(view.getTFCb_Imag())); daten.setIterationstiefe(Integer.parseInt(view.getTFI())); model.setMandelDaten(daten); model.berechne(); } //........... }
Geändert von kyanthos (02.07.11 um 11:26 Uhr)
Ähnliche Themen
-
Graphen zeichnen / Java Swing
Von JavaNewbo im Forum Swing, Java2D/3D, SWT, JFaceAntworten: 9Letzter Beitrag: 28.10.10, 16:45 -
Java Canvas Zeichnen
Von nathaniells freak im Forum Swing, Java2D/3D, SWT, JFaceAntworten: 24Letzter Beitrag: 29.05.08, 14:09 -
Pfeile zeichnen in Java
Von jorgeHX im Forum Swing, Java2D/3D, SWT, JFaceAntworten: 4Letzter Beitrag: 15.06.07, 11:52 -
Zeichnen in Java
Von jorgeHX im Forum Swing, Java2D/3D, SWT, JFaceAntworten: 4Letzter Beitrag: 20.12.04, 20:15 -
Struktur aus Datei lesen [C++] -> [Java]
Von sisela im Forum JavaAntworten: 13Letzter Beitrag: 25.11.04, 15:56





Zitieren
Login





