Probleme mit mehreren Canvas: Überlagerungseffekte?

Status
Nicht offen für weitere Antworten.

Loep

Aktives Mitglied
Hallo,

ich hab hier ein Tool, das aus Client und Server besteht: Der Server errechnet aus den vom Client gesendeten Parametern die Mandelbrotmenge und gibt sie in einem int[][] zurück. Der Client stellt das Ergebnis dann in einem Canvas dar.
Nun soll der Client die Anfrage auf mehrere Server aufteilen und die Teilergebnisse zu einem ganzen Bild zusammensetzen. Wenn ich die Bilder von jedem Server einzeln anzeigen lassen klappt alles, aber wenn ich alle zugleich anzeigen lassen will, zeigt er nur das erste und letzte Teilstück an (der Rest scheint irgendwovon überdeckt zu sein)

Was mache ich falsch? Was überdeckt da? Wo sind die anderen Teile hin? Wieso diese "Darstellungsfehler"?
(Grad ist mir auch noch aufgefallen, dass die y-Koordinate vom ersten Teilbild im Gesamtbild verschoben ist, obwohl daran nix geändert wurde)

Dort sind Beispielbilder und der gesamte Quellcode zu finden: *klick*
Hier die meiner Meinung nach relevanten Auszüge:

Code:
public static void main(String[] args) {
		[...]
		Client client = new Client();
		for(int i=0; i<anzahlServer; i++) {
    		// verfuegbare Serverdaten auslesen und im Client verwenden
			FraktaleServer fs = current.get(i);
    		client.setParameter(fs.getBreite(), fs.getLaenge(), fs.getX1(), fs.getY1(), fs.getX2(), fs.getY2(), fs.getIteration(), fs.getFarbe(), fs.getModul());
    		client.server = fs.getAddress().getHostName();
    		client.port = fs.getAddress().getPort();
    		// Immer wieder pruefen, ob Serverberechnung fertig und Port wieder offen ist (oder Timedout)
    		client.serverErreichbar();
    		// Canvas-Hintergund jedesmal veraendern zur Unterscheidung der Teilbilder
    		Color bg = new Color((i+1)*1234567890);
    		client.setBgColor(bg);
    		// Teilbild empfangen
    		int[][] array = client.empfangen(fs.getStartX(), fs.getStartY());
       		// Teilbild in eigenem Canvas darstellen und richtig positionieren
    		client.anzeigen(fs.getStartX(), fs.getStartY(), array);
	    }

	    // Mandelbrotmenge anzeigen
    	client.setVisible(true);
}

Code:
class Client() {
    [..]
    public void anzeigen(int startX, int startY, int[][] array) {
        // Zeichenflaeche erstellen
        MyCanvas canvas = new MyCanvas();
        // Hintergrundfarbe setzen
       	canvas.setBackground(bgFarbe);
        // Position und Groesse anpassen
        canvas.setBounds(startX, startY, frameBreite/serverAnzahl, frameLaenge);
        // Varbiale an Zeichenflaeche uebergeben
        canvas.breite = breite;
        canvas.laenge = laenge;
        canvas.startX = startX;
        canvas.startY = startY;
        canvas.array = array;
        // Zeichenflaeche dem Fenster hinzufuegen
        frame.add(canvas);
    }
}

Code:
class MyCanvas extends Canvas {
    static final long serialVersionUID = 0; // erforderlich um Warning (Eclipse) zu eliminieren
    int[][] array;
    int breite;
    int laenge;
    int startX;
    int startY;

    // Funktion wird automatisch von Java gerufen,
    // wenn das Fenster angezeigt wird und sich die Zeichenflaeche darstellen soll
    public void paint(Graphics g) {
        // Vordergrundfarbe setzen
        g.setColor(Color.black);
        // Pixelgrafik aus Array auf der Zeichenflaeche ausgeben
        for(int x=0; x<breite; x++) {
            for(int y=0; y<laenge; y++) {
                // Farbwert des Bildpunkts auslesen
            	int tmp = array[x][y];
                // 0=Hintergrund, sonst Pixel malen
            	if(tmp > 0) {
                    // setzt Pixel auf die Zeichenflaeche
            		g.drawRect(startX+x,startY+y,0,0);
                }
            }
        }
    }
}

Vielen Dank an die, die bis hierher noch durchgehalten haben ;)
 

Loep

Aktives Mitglied
java.awt.Rectangle[x=0,y=0,width=266,height=600]
java.awt.Rectangle[x=266,y=0,width=266,height=600]
java.awt.Rectangle[x=532,y=0,width=266,height=600]
^- das sind die Canvas-Bounds von links nach rechts.
Sollten keine Überlagerungen da sein, alles schön nebeneinander... eigentlich...
 

Wildcard

Top Contributor
Ich hab mir gerade dein Bild angesehen.
Der Hintergrund scheint ja gezeichnet zu werden, also liegt's wohl an den Daten.
 

Loep

Aktives Mitglied
Ich hab grad mal ein kleines Bild berechnen lassen, um den array-Inhalt zusätzlich in einer txt repäsentieren zu lassen:

array-Inhalte.1-3.png

zugehörige Konsolen-Ausgabe als txt-Datei

Auf dem Bild fehlt wieder was und es ist verschoben, in der txt ist alles richtig und vollständig.

Hier die veränderte paint() von MyCanvas, damit man sieht wo die txt-Ausgabe herkommt:
Code:
    public void paint(Graphics g) {
        // Vordergrundfarbe setzen
        g.setColor(Color.black);
        // Pixelgrafik aus Array auf der Zeichenflaeche ausgeben
        for(int x=0; x<breite; x++) {
            for(int y=0; y<laenge; y++) {
            	// Testausgabe
            	System.out.print(array[x][y]);
            	// Farbwert des Bildpunkts auslesen
            	int tmp = array[x][y];
                // 0=Hintergrund, sonst Pixel malen
            	if(tmp > 0) {
                    // setzt Pixel auf die Zeichenflaeche
            		g.drawRect(startX+x,startY+y,0,0);
                }
            }
            System.out.println();
        }
    }

Danke für die Unterstützung!
 

Loep

Aktives Mitglied
Was mir grad mal so eingefallen ist: kann das auch an dem (beim Frame) nichtgesetzten LayoutManager liegen?
Hab grad mal versucht einen einzusetzen, dann sah es noch schlimmer aus, aber kann gut sein, dass ich den falsch genutzt hab.
Wenn es daran liegen kann: Welchen könnte ich da am besten nehmen? GridLayout oder?
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Juelin Probleme bei Stage.close() AWT, Swing, JavaFX & SWT 23
XWing Swing Image anzeigen und probleme mit klassen AWT, Swing, JavaFX & SWT 3
E repaint Probleme AWT, Swing, JavaFX & SWT 13
mananana Mögliche probleme die in einer GUI passieren Können AWT, Swing, JavaFX & SWT 6
S GridBagLayout - Probleme mit Bilderanzeige AWT, Swing, JavaFX & SWT 3
I Probleme beim Drucken auf einen PDF-Drucker AWT, Swing, JavaFX & SWT 8
J Probleme mit idividueller Tablecell AWT, Swing, JavaFX & SWT 0
D JavaFX Probleme beim nachtäglichen hinzufügen der jfx dependency AWT, Swing, JavaFX & SWT 7
J Probleme mit InputDialog AWT, Swing, JavaFX & SWT 4
D JavaFX TextArea Probleme bei langen Zeilen AWT, Swing, JavaFX & SWT 1
G JavaFX SplitPane Anwendung - Controller Probleme AWT, Swing, JavaFX & SWT 5
K Probleme bei der Erstellung und Ausführung einer Jar Datei AWT, Swing, JavaFX & SWT 2
B Probleme Action Listener Taschenrechner AWT, Swing, JavaFX & SWT 27
pph080560 JavaFX Probleme mit FX AWT, Swing, JavaFX & SWT 3
M Probleme mit OpenJDK AWT, Swing, JavaFX & SWT 6
B 2D-Grafik paintcomponent Probleme beim zeichnen AWT, Swing, JavaFX & SWT 10
B Swing Probleme mit dem Layout AWT, Swing, JavaFX & SWT 1
L JavaFX Probleme beim Installieren JavaFX11 / JavaFX12 -- Eclipse 2019-03 AWT, Swing, JavaFX & SWT 3
Fiedlerdan Image-Pfad Probleme nach Export aus Eclipse AWT, Swing, JavaFX & SWT 31
H JFreeChart - DemoDataSetFactory Probleme AWT, Swing, JavaFX & SWT 1
H LayoutManager Probleme mit Positionierung/Abständen der Komponenten AWT, Swing, JavaFX & SWT 14
A Probleme mit gridheight (GridBagLayout) AWT, Swing, JavaFX & SWT 6
U Opaque Probleme AWT, Swing, JavaFX & SWT 3
H JavaFX Probleme Beim Wechseln der scene als .fxml AWT, Swing, JavaFX & SWT 7
F JavaFX Probleme beim automatischen Konvertieren AWT, Swing, JavaFX & SWT 4
S Probleme mit JComboboxen(?) AWT, Swing, JavaFX & SWT 18
S Swing Probleme mit MigLayout AWT, Swing, JavaFX & SWT 2
C Probleme mit createImage AWT, Swing, JavaFX & SWT 1
J Probleme mit contex Menu (javafx) AWT, Swing, JavaFX & SWT 1
J Probleme bei GameofLife AWT, Swing, JavaFX & SWT 24
S JavaFx - Button ActionEvent Probleme AWT, Swing, JavaFX & SWT 3
T Swing Probleme mit repaint() bzw. JScrollPane AWT, Swing, JavaFX & SWT 7
ImperatorMing JavaFX Probleme mit WindowEvent AWT, Swing, JavaFX & SWT 0
ImperatorMing JavaFX Probleme mit WindowEvent AWT, Swing, JavaFX & SWT 5
J LayoutManager GridBagLayout, probleme mit Anordnung von Objekten AWT, Swing, JavaFX & SWT 6
T Java FX Probleme beim befüllen eines Tableviews AWT, Swing, JavaFX & SWT 5
S AWT Probleme beim Zeichnen AWT, Swing, JavaFX & SWT 3
A Swing Probleme mit dem adden von JButtons zur JScrollPane AWT, Swing, JavaFX & SWT 2
D Swing Probleme mit dem Resizing AWT, Swing, JavaFX & SWT 7
G Probleme mit TextArea AWT, Swing, JavaFX & SWT 5
G JFrame Probleme AWT, Swing, JavaFX & SWT 2
K Probleme beim JPasswordField AWT, Swing, JavaFX & SWT 11
G Cardlayout Refresh Probleme AWT, Swing, JavaFX & SWT 2
J Swing Probleme mit ListSelectionListener(), Inhalte der JList werden gelöscht? AWT, Swing, JavaFX & SWT 6
D JavaFX Probleme bei Service-Klasse beim ändern der GUI AWT, Swing, JavaFX & SWT 8
K Probleme beim zeichnen mit paintComponent() AWT, Swing, JavaFX & SWT 1
M JButton Probleme AWT, Swing, JavaFX & SWT 14
L Probleme mit Programm AWT, Swing, JavaFX & SWT 13
blazingblade komischerweise probleme mit jtextfield.gettext() AWT, Swing, JavaFX & SWT 9
Xanny 2D-Grafik Beginner! Probleme mit Swing, Gprahics class und paint AWT, Swing, JavaFX & SWT 13
Sin137 LayoutManager GridBagLayout Probleme AWT, Swing, JavaFX & SWT 6
H Netbeans Designer: Probleme mit JPanel und JFrame AWT, Swing, JavaFX & SWT 2
M Swing Probleme mit Frame.pack() AWT, Swing, JavaFX & SWT 1
C Java FX Probleme beim Schließen einer Stage AWT, Swing, JavaFX & SWT 11
M Swing JProgressbar und Outoputstream probleme AWT, Swing, JavaFX & SWT 2
S Swing Probleme mit transparenz der Hintergrundfarbe und JRadioButtons AWT, Swing, JavaFX & SWT 2
Z Probleme mit JPanel's AWT, Swing, JavaFX & SWT 6
T Probleme mit Anzeige von Elementen im JPanel AWT, Swing, JavaFX & SWT 1
Shams Probleme bei dem Hinzufügen von Komponenten zu einem JFrame AWT, Swing, JavaFX & SWT 3
A Swing Probleme mit JScrollPane AWT, Swing, JavaFX & SWT 6
M Layout-Probleme unter Swing AWT, Swing, JavaFX & SWT 5
H Swing Probleme beim erstellen eines neuen Objektes durch einen Button AWT, Swing, JavaFX & SWT 10
J JavaFX JavaFX Probleme bei der Anzeige von Text AWT, Swing, JavaFX & SWT 18
A Probleme mit TilledBorder("***") AWT, Swing, JavaFX & SWT 4
F Bildschirmschoner Probleme mit Preview AWT, Swing, JavaFX & SWT 8
X Panel Probleme (Tetris) AWT, Swing, JavaFX & SWT 8
N JTable probleme AWT, Swing, JavaFX & SWT 5
B Probleme bei ImageIO.read (?!) AWT, Swing, JavaFX & SWT 9
P JFrame Location-/Size-Probleme AWT, Swing, JavaFX & SWT 5
U LayoutManager Probleme mit Layouts AWT, Swing, JavaFX & SWT 5
C 3 kleine Probleme... AWT, Swing, JavaFX & SWT 13
L NullpointerException und Probleme mit repaint() AWT, Swing, JavaFX & SWT 11
A Probleme mit 2 JFrames in einem Programm AWT, Swing, JavaFX & SWT 7
K LayoutManager Probleme mit 2 Komponenten AWT, Swing, JavaFX & SWT 9
C Probleme mit Buttons und einem ActionListener AWT, Swing, JavaFX & SWT 2
M Probleme mit Verkleinern eines GUI AWT, Swing, JavaFX & SWT 7
B Swing label.setText() macht probleme AWT, Swing, JavaFX & SWT 5
B ImageIcon - Probleme mit dem Dateipfad AWT, Swing, JavaFX & SWT 5
H JTree Probleme AWT, Swing, JavaFX & SWT 9
F Probleme mit (Graphics g) II AWT, Swing, JavaFX & SWT 4
F Probleme mit (Graphics g) AWT, Swing, JavaFX & SWT 3
K 2D-Grafik .GIF macht mir Probleme AWT, Swing, JavaFX & SWT 14
B Probleme bei Sortierung einer Tabelle mit DefaultTableModel AWT, Swing, JavaFX & SWT 6
T JTable Graphik probleme AWT, Swing, JavaFX & SWT 3
H GridBagLayout macht Probleme... AWT, Swing, JavaFX & SWT 4
vandread Swing Probleme mit jTextField im zusammenspiel mit einem Einblendeffekt (inkl. KSKB) AWT, Swing, JavaFX & SWT 6
S Swing Lauftext Performance Probleme, in größerer Anwendung AWT, Swing, JavaFX & SWT 6
B Infolabel Probleme mit Paint() ? AWT, Swing, JavaFX & SWT 8
P Probleme mit setIconImage AWT, Swing, JavaFX & SWT 8
U Swing Probleme mit Asynchronen Prozessen und Swing: AWT, Swing, JavaFX & SWT 3
das-mo Probleme mit GridBagLayout AWT, Swing, JavaFX & SWT 6
N 2D-Grafik 2 Probleme beim zeichnen AWT, Swing, JavaFX & SWT 18
L Probleme mit JPanel AWT, Swing, JavaFX & SWT 8
D Probleme bei Übertrag von ArrayList in Jtable AWT, Swing, JavaFX & SWT 2
G kleinere Probleme mit GUI AWT, Swing, JavaFX & SWT 2
G Mehrere Probleme mit Java's GUI AWT, Swing, JavaFX & SWT 6
M Swing Erste Schritte mit der GUI, viele Probleme AWT, Swing, JavaFX & SWT 36
J GUI-Aktualisierungs-Probleme AWT, Swing, JavaFX & SWT 4
B Performance-Probleme AWT, Swing, JavaFX & SWT 17
I Probleme if-Anweisung AWT, Swing, JavaFX & SWT 26

Ähnliche Java Themen

Neue Themen


Oben