Hallo,
ich möchte ein Programm schreiben, das Freihandlinien zeichnet. Zur Zeit habe ich dafür folgende Lösungen:
1.
2.
Mein Problem: Die erste Lösung zeichnet nur ein Freihandgebilde, Unterbrechungen sind nicht möglich; die zweite hinterlässt bei nicht extrem langsamen Linien Löcher.
Weiß jemand, wie man das besser machen kann?[/list]
ich möchte ein Programm schreiben, das Freihandlinien zeichnet. Zur Zeit habe ich dafür folgende Lösungen:
1.
Code:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.*;
public class Freihand extends JFrame {
Vector<Point> Points = new Vector(1, 1);
public Freihand (String Title) {
super (Title);
addWindowListener(new WindowAdapter() {
public void windowClosing (WindowEvent evt) {System.exit(0);}});
addMouseMotionListener(new MouseMotionAdapter() {
public void mouseDragged (MouseEvent evt) {Points.add(new Point(evt.getX(), evt.getY())); repaint();}});
setSize(300, 300);
getContentPane().setLayout(new BorderLayout());
}
public static void main (String args[]) {
new Freihand("Freihand").setVisible(true);
}
public void paint (Graphics g) {
for(int i = 1; i < Points.size(); i++) {
g.drawLine(Points.get(i-1).x, Points.get(i-1).y, Points.get(i).x, Points.get(i).y);
}
}
}
2.
Code:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.*;
public class Freihand extends JFrame {
Vector<Point> Points = new Vector(1, 1);
public Freihand (String Title) {
super (Title);
addWindowListener(new WindowAdapter() {
public void windowClosing (WindowEvent evt) {System.exit(0);}});
addMouseMotionListener(new MouseMotionAdapter() {
public void mouseDragged (MouseEvent evt) {Points.add(new Point(evt.getX(), evt.getY())); repaint();}});
setSize(300, 300);
getContentPane().setLayout(new BorderLayout());
}
public static void main (String args[]) {
new Freihand("Freihand").setVisible(true);
}
public void paint (Graphics g) {
for(int i = 0; i < Points.size(); i++) {
g.drawRect(Points.get(i).x, Points.get(i).y, 0, 0);
}
}
}
Mein Problem: Die erste Lösung zeichnet nur ein Freihandgebilde, Unterbrechungen sind nicht möglich; die zweite hinterlässt bei nicht extrem langsamen Linien Löcher.
Weiß jemand, wie man das besser machen kann?[/list]