Hi ,
Ich habe folgendes Problem. Ich habe in einem JPanel ein Koordinatensystem erstellt. Dieses Funktioniert soweit auch ganz gut. Nun soll durch ein filledPolygon ( ein Pfeil) die aktuelle Position eines Objektes dargestellt werden. Wenn sich die aktuelle Position des Objektes verändert hat, dann rufe ich paintComponent auf und Zeichne das ganze Koordinatensystem, mit aktueller Position neu, was zu einem flackern führt und nicht wirklich flüssig läuft. Wenn ich allerdings nur den Pfeil neu Zeichne, so bleibt der alte bestehen, welchen ich natürlich entfernen möchte. (einfach nur ein weißes polygon über die alte Stelle zu malen funktioniert nicht, da so Teile des Koordinatensystem gelöscht würden).
Gibt es eine Möglichkeit, das ich mein Polygon verschieben kann ohne den ganzen Rest neuzeichnen zu müssen ? ( Beispielsweise nur den Teil neuzeichnen, an welcher Stelle sich das Polygon zuletzt befunden hat ? )
Hier noch ein Code Ausschnitt , meine Paint component
Danke im Vorraus
Ich habe folgendes Problem. Ich habe in einem JPanel ein Koordinatensystem erstellt. Dieses Funktioniert soweit auch ganz gut. Nun soll durch ein filledPolygon ( ein Pfeil) die aktuelle Position eines Objektes dargestellt werden. Wenn sich die aktuelle Position des Objektes verändert hat, dann rufe ich paintComponent auf und Zeichne das ganze Koordinatensystem, mit aktueller Position neu, was zu einem flackern führt und nicht wirklich flüssig läuft. Wenn ich allerdings nur den Pfeil neu Zeichne, so bleibt der alte bestehen, welchen ich natürlich entfernen möchte. (einfach nur ein weißes polygon über die alte Stelle zu malen funktioniert nicht, da so Teile des Koordinatensystem gelöscht würden).
Gibt es eine Möglichkeit, das ich mein Polygon verschieben kann ohne den ganzen Rest neuzeichnen zu müssen ? ( Beispielsweise nur den Teil neuzeichnen, an welcher Stelle sich das Polygon zuletzt befunden hat ? )
Hier noch ein Code Ausschnitt , meine Paint component
Java:
public void paintComponent(Graphics g) {
Graphics2D g2 = (Graphics2D) g;
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
if(!isDrawn[0]){
drawCoordinateSystem(g);
isDrawn[0] = true;
}
AffineTransform at = new AffineTransform();
at.setToRotation(Math.toRadians(((int)(GUIFunctions.getAngle()*100))/100d) , robotPositionX, robotPositionY);
//draws the Current Position of the Object
int[] xPositions = {position - 5, position , position + 5, position};
int[] yPositions = {position + 5, position, position + 5 , position -10};
for(int i = 0 ; i < xPositions.length ; i ++){
Point2D.Double p = new Point2D.Double(xPositions[i], yPositions[i]);
at.transform(p, p);
xPositions[i] = (int)p.x;
yPositions[i] = (int)p.y;
}
g2.fillPolygon(xPositions, yPositions, 4);
g2.setColor(Color.BLACK);
}
Danke im Vorraus