Hallo alle zusammen,
ich habe eine Frage zum Drehen von Rechtecken...
Im groben habe ich 2 Java Dateien, zum einen die Datei "Board.java" und zum anderen die Datei "Rechtecke.java".
In der Klasse Board male ich mit Hilfe von Graphics2D herum, in der Klasse Recktecke erstelle ich (wie der Name auch schon sagt Rechtecke) die dann darauf in der Klasse Board gezeichnet werden.
Grob gesagt sollen die Rechtecke Autos darstellen. Nun sollen die Autos erst geradelinig fahren, was kein problem ist weil ich einfach nur die x bzw. y Koordinaten ändern muss... Dann sollen die Autos jedoch auch Kurven oder im Kreis fahren können und hier kommt das Problem ... Damit das ganze halbwegs vernünftig und realitätsnah aussieht versuche ich jetzt schon einge Zeit die Rechtecke zu drehen damit sich sich der Kurve so zu sagen anpassen...
Und nun zu meiner Frage, wie bekomme ich die Rechtecke vernünftigt gedreht ?
In Board.java erstelle ich sie wie folgt:
Und in Board.java zeichne ich sie dann wie folgt:
Nur wie drehe ich die Rechtecke dann ? Am liebsten würde ich sie natürlich in der Recktecke Klasse drehen und dann in der Boardklasse nur aufzeichen ich weiss aber nicht ob dies möglich ist....
Ich habe mit Hilfe der Suchfunktion und Google schon herrausgefunden das ich wohl eine "AffineTransform" brauche um das zu bewerkstelligen .... Aber wie setze ich diese korrekt ein sodass ich nur das Rechteck drehe und dieses letzendlich eine schöne Kurve lasse fahren ?
Für Hilfe wäre ich sehr dankbar...
Mit freundlichen Grüßen,
Max
EDIT: Nun gut wie ich mein Rechteck drehe habe ich herausgefunden:
Problem daran, nun liegen 2 Rechtecke übereinander, das eine gedrehte, und das andere alte Rechtecke, wie lösche ich das alte Rechteck ?
ich habe eine Frage zum Drehen von Rechtecken...
Im groben habe ich 2 Java Dateien, zum einen die Datei "Board.java" und zum anderen die Datei "Rechtecke.java".
In der Klasse Board male ich mit Hilfe von Graphics2D herum, in der Klasse Recktecke erstelle ich (wie der Name auch schon sagt Rechtecke) die dann darauf in der Klasse Board gezeichnet werden.
Grob gesagt sollen die Rechtecke Autos darstellen. Nun sollen die Autos erst geradelinig fahren, was kein problem ist weil ich einfach nur die x bzw. y Koordinaten ändern muss... Dann sollen die Autos jedoch auch Kurven oder im Kreis fahren können und hier kommt das Problem ... Damit das ganze halbwegs vernünftig und realitätsnah aussieht versuche ich jetzt schon einge Zeit die Rechtecke zu drehen damit sich sich der Kurve so zu sagen anpassen...
Und nun zu meiner Frage, wie bekomme ich die Rechtecke vernünftigt gedreht ?
In Board.java erstelle ich sie wie folgt:
Java:
public Rechtecke(int x, int y) {
visible = true;
this.x = x;
this.y = y;
rect = new Rectangle2D.Double(x,y,15,22);
}
//[...]
public Rectangle2D getRect(){
return rect;
}
Und in Board.java zeichne ich sie dann wie folgt:
Java:
public void paint(Graphics g) {
super.paint(g);
for (int i = 0; i < rechteckeListe.size(); i++) {
Rechtecke e = (Rechtecke)rechteckeListe.get(i);
if (e.isVisible()){
g2d.setColor(Color.red);
g2d.fill(e.getRect());
g2d.draw(e.getRect());
}
}
Toolkit.getDefaultToolkit().sync();
g.dispose();
}
Nur wie drehe ich die Rechtecke dann ? Am liebsten würde ich sie natürlich in der Recktecke Klasse drehen und dann in der Boardklasse nur aufzeichen ich weiss aber nicht ob dies möglich ist....
Ich habe mit Hilfe der Suchfunktion und Google schon herrausgefunden das ich wohl eine "AffineTransform" brauche um das zu bewerkstelligen .... Aber wie setze ich diese korrekt ein sodass ich nur das Rechteck drehe und dieses letzendlich eine schöne Kurve lasse fahren ?
Für Hilfe wäre ich sehr dankbar...
Mit freundlichen Grüßen,
Max
EDIT: Nun gut wie ich mein Rechteck drehe habe ich herausgefunden:
Java:
g2d.setColor(Color.red);
g2d.fill(a.getRect());
g2d.draw(a.getRect());
g2d.rotate(Math.toRadians(a.getDeg()),a.getRect().getCenterX(), a.getRect().getCenterY());
g2d.fill(a.getRect());
Zuletzt bearbeitet: