Das ist eher eine mathematisch, geometrische Frage aber wie berechne ich wie der Pfeil am Ende einer Linie ausgerichtet werden soll, sodass er egal in welcher Richtung er schaut richtig aussieht.
Bsp: (drücken und ziehen um einen Pfeil zu erstellen)
Bsp: (drücken und ziehen um einen Pfeil zu erstellen)
Java:
import java.awt.Color;
import java.awt.Toolkit;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionAdapter;
import javax.swing.*;
public class GUI extends JFrame
{
private Linie linie = null;
private final int obererRand = 25;
private final int linkerRand = 3;
public GUI() {
setTitle("Travelling Salesman");
final int hoehe = Toolkit.getDefaultToolkit().getScreenSize().height
- Toolkit.getDefaultToolkit().getScreenSize().height / 5;
final int breite = Toolkit.getDefaultToolkit().getScreenSize().width
- Toolkit.getDefaultToolkit().getScreenSize().width / 5;
setBounds(breite / 10, hoehe / 10, breite, hoehe);
getContentPane().setBackground(Color.white);
setLayout(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setResizable(false);
addMouseMotionListener(new MouseMotionAdapter()
{
@Override
public void mouseDragged(MouseEvent e) {
if (linie == null) {
linie = new Linie();
GUI.this.add(linie);
linie.setLocation(0, 0);
linie.setSize(breite, hoehe);
linie.setStartX(e.getX() - linkerRand);
linie.setStartY(e.getY() - obererRand);
} else {
linie.setZielX(e.getX() - linkerRand - linie.getX());
linie.setZielY(e.getY() - obererRand - linie.getY());
repaint();
}
}
});
setVisible(true);
}
public static void main(String[] args) {
new GUI();
}
}