G
Guest
Gast
Hi!!
Habe im Netz ein Programm gefunden, das einen Dreieck rotieren läßt. Ich verstehe da ein wenig nicht im Program.
Also was ich nicht verstehe ist folgendes. Das Neuzeichnen des Dreiecks, das mittels der Schleife ab Zeile 28 realisiert wird.
Wie funktioniert das Neuzeichnen??
Mit rotate wird ein Winkel übegeben, das ist klar...und mit repaint() wird neugezeichnet. Was geschieht intern wenn ich myPicture.rotate(Math.PI/90) in der Schleife aufrufe? Wie wird das Objekt neugezeichnet, wie funktioniert das?
Ich greife auf das Objekt zu, und nicht auf die Figur selbst...das verstehe ich nicht ganz.
Gruß
Habe im Netz ein Programm gefunden, das einen Dreieck rotieren läßt. Ich verstehe da ein wenig nicht im Program.
Code:
import javax.swing.*;
import java.awt.*;
import java.awt.geom.*;
public class RotatePicture extends JPanel
{
private static final int xa = 190;
private static final int ya = 180;
private double angle;
private GeneralPath path;
private Rectangle2D rect = new Rectangle2D.Double(100,100,50,50);
private Ellipse2D anker = new Ellipse2D.Double(xa+8,ya+8,16,16);
public static void main(String[] args) throws InterruptedException
{
JFrame frame = new JFrame();
Container contPane = frame.getContentPane();
RotatePicture myPicture = new RotatePicture();
contPane.add(myPicture);
frame.setSize(400,400);
frame.setVisible(true);
for (int i = 1; i <= 1500; i++)
{
myPicture.rotate(Math.PI/90);
Thread.sleep(10);
}
}
public RotatePicture()
{
super();
path = new GeneralPath();
path.moveTo(100,100);
path.lineTo(350,200);
path.lineTo(200,300);
path.closePath();
setBackground(Color.BLUE);
}
public void paint(Graphics g)
{
Graphics2D g2 = (Graphics2D) g;
super.paint(g);
AffineTransform rotate = AffineTransform.getRotateInstance(angle,xa,ya);
path.transform(rotate);
g2.setColor(Color.WHITE);
g2.fill(anker);
g2.setColor(Color.YELLOW);
g2.setTransform(rotate);
g2.fill(path);
g2.setColor(Color.RED);
g2.fill(rect);
}
public void rotate(double angle)
{
this.angle = angle;
repaint();
}
}
Also was ich nicht verstehe ist folgendes. Das Neuzeichnen des Dreiecks, das mittels der Schleife ab Zeile 28 realisiert wird.
Wie funktioniert das Neuzeichnen??
Code:
myPicture.rotate(Math.PI/90);
Ich greife auf das Objekt zu, und nicht auf die Figur selbst...das verstehe ich nicht ganz.
Gruß