Freihandzeichnungen

Status
Nicht offen für weitere Antworten.

merlin2

Top Contributor
Hallo,

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]
 

Illuvatar

Top Contributor
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>>.
 
G

Gast

Gast
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
 
Status
Nicht offen für weitere Antworten.

Oben