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

Neue Themen


Zurück
Oben