# Freihandzeichnungen



## merlin2 (9. Feb 2007)

Hallo,

ich möchte ein Programm schreiben, das Freihandlinien zeichnet. Zur Zeit habe ich dafür folgende Lösungen:

*1.*

```
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.*

```
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]


----------



## Illuvatar (9. Feb 2007)

Mach eine Mischung. Der erste Ansatz ist generell der bessere, aber du darfst eben die nächste Zeichnung nicht wieder zum gleichen Vector hinzufügen. Sinnvoll wäre vielleicht ein Vector<Vector<Point>>.


----------



## merlin2 (10. Feb 2007)

Danke für die Hilfe! Der Ansatz mit Vector<Vector<Point>> ist der richtige!  :applaus:


----------



## Gast (1. Mrz 2007)

Hey, ich sitze grade an dem selben Porblem, kann mir jemand erklären, was mit <Vector<Point>> gemeint ist?
ichhab leider nichts dazu gefunden
MfG Denis


----------



## Illuvatar (1. Mrz 2007)

Na, ein Vector, der Vectoren beinhaltet, die Points beinhalten.


----------

