Ich arbeite an einem Graph-System für eines meiner Projekte. Sehr wahrscheinlich gibt es das schon, doch es stellt eine Herausforderung dar, die ich gerne bestehen würde.
Allerdings tun sich mir im Moment Rätsel auf, die ich weder logisch noch mathematisch nachvollziehen kann.
In folgendem Bild seht ihr mein bisheriges Programm mit der GraphArea (schwarz), dem GraphHintergrund (weiss, rechts und unten bündigmit dem schwarzen Rechteck), auf dem die Daten angezeigt werden, sowie die x/y-Achse und ein Rahmen oben und rechts (grau), nicht zu verwechseln mit dem jFrame-grau im Hintergrund.
Die Rechtecke und Linien werden mit folgendem Code gezeichnet:
Wer sich den Code nun etwas aufmerksam angeschaut wird feststellen, dass die Linien GENAU DIE GLEICHEN Koordinaten haben wie das Rechteck für den GraphAreaHintergrund. Wie kommt es aber, dass dieses Rechteck grösser ist, sowohl in der Breite als auch in der Höhe?
Der Array
wird am Anfang vom User festgelegt und danach NICHT mehr verändert.
legt den Abstand zwischen dem inneren zum äusseren Rechteck fest. Im Beispiel ist
, was dann 30 Pixeln entspricht / enstsprecheh sollte.
Da leftSpace bei der Angabe von grösseren Werten bei der Y-Achse nicht reicht, werden sämtliche X-Werte schon beim festlegen des GraphArea-Arrays um den gewüscnhten Platz nach rechts verschoben, in meinem Beispiel 45 Pixel.
Daraus folgt:
Grosses Rechteck (schwarz) (55, 10) bis (545, 410)
Kleines Rechteck (weiss) (85, 40) bis (515, 380)
Linien (grau)
y-Achse (85, 40) bis (85, 380)
x-Achse (85, 380) bis (515, 380)
Wieso sind die Achsen nicht gleich lang wie das innere Rechteck, bzw. wieso wird das weisse Rechteck nicht schön innerhalb der Achsen und der Rahmenlinien gezeichnet?
Allerdings tun sich mir im Moment Rätsel auf, die ich weder logisch noch mathematisch nachvollziehen kann.
In folgendem Bild seht ihr mein bisheriges Programm mit der GraphArea (schwarz), dem GraphHintergrund (weiss, rechts und unten bündigmit dem schwarzen Rechteck), auf dem die Daten angezeigt werden, sowie die x/y-Achse und ein Rahmen oben und rechts (grau), nicht zu verwechseln mit dem jFrame-grau im Hintergrund.

Die Rechtecke und Linien werden mit folgendem Code gezeichnet:
Java:
g2.fill(new Rectangle2D.Double(graphArea[0], graphArea[1], graphArea[2], graphArea[3])); //schwarzer hintergrund
g2.fill(new Rectangle2D.Double(graphArea[0]+leftSpace, graphArea[1]+leftSpace, graphArea[2]-leftSpace, graphArea[3]-leftSpace));
//weiss, über diesem Hintergrund sollen mal die Daten stehen, er ist etwas kleiner, damit man Titel und Beschriftungen anzeigen kann
Sys("x: "+(graphArea[2]-leftSpace)+" y: "+(graphArea[3]-leftSpace));
//Ausgabe in der Konsole:
//x: 515 y: 380
g2.draw(new Line2D.Double(graphArea[0]+leftSpace, graphArea[1]+leftSpace, graphArea[0]+leftSpace, graphArea[3]-leftSpace));
g2.draw(new Line2D.Double(graphArea[0]+leftSpace, graphArea[3]-leftSpace, graphArea[2]-leftSpace, graphArea[3]-leftSpace));
g2.draw(new Line2D.Double(graphArea[2]-leftSpace, graphArea[1]+leftSpace, graphArea[2]-leftSpace, graphArea[3]-leftSpace));
g2.draw(new Line2D.Double(graphArea[0]+leftSpace, graphArea[1]+leftSpace, graphArea[2]-leftSpace, graphArea[1]+leftSpace));
Sys("x: "+(graphArea[2]-leftSpace)+" y: "+(graphArea[3]-leftSpace));
//Ausgabe in der Konsole:
//x: 515 y: 380
//Diese vier Linien bilden den Rahmen, die kleinen Striche sowie die Zahlen, die auf dem Bild zu sehen sind, werden erst später hinzugefügt. Sie zeigen die Pixel jedes Striches von oben her an.
public static void Sys(String text) {
System.out.println(text);
}
Wer sich den Code nun etwas aufmerksam angeschaut wird feststellen, dass die Linien GENAU DIE GLEICHEN Koordinaten haben wie das Rechteck für den GraphAreaHintergrund. Wie kommt es aber, dass dieses Rechteck grösser ist, sowohl in der Breite als auch in der Höhe?
Der Array
Code:
graphArea[0-3]
Java:
jC.setGraphArea(X1, Y1, X2, Y2);
jC.setGraphArea(10, 10, 500, 410);
Code:
leftSpace
Code:
leftSpace = 30
Da leftSpace bei der Angabe von grösseren Werten bei der Y-Achse nicht reicht, werden sämtliche X-Werte schon beim festlegen des GraphArea-Arrays um den gewüscnhten Platz nach rechts verschoben, in meinem Beispiel 45 Pixel.
Daraus folgt:
Grosses Rechteck (schwarz) (55, 10) bis (545, 410)
Kleines Rechteck (weiss) (85, 40) bis (515, 380)
Linien (grau)
y-Achse (85, 40) bis (85, 380)
x-Achse (85, 380) bis (515, 380)
Wieso sind die Achsen nicht gleich lang wie das innere Rechteck, bzw. wieso wird das weisse Rechteck nicht schön innerhalb der Achsen und der Rahmenlinien gezeichnet?
Zuletzt bearbeitet: