Hi, ich bin am Umsteigen auf Java (von Delphi) und bastel an einigen kleinen Problemen herum, um etwas zu lernen. Im Moment möchte ich ein Programm schreiben, mit dem ich mit der Maus Polygone zeichnen kann (funktioniert schon), diese auf Konvexität untersuche (geht auch) und dann auch füllen kann (hier hakt es). Zum Füllen gibt es verschiedene Algorithmen - ich wollte mit einem einfachen (rekursiven) beginnen ...
Mein Hauptproblem besteht wohl darin, die Pixelfarbe auf meiner Zeichenfläche (DrawPanel) auszulesen. Hab hier und da etwas gefunden ... zuletzt habe ich es so probiert:
zeichenBlatt ist ein JPanel (bei mir erweitert um ein setPixel). Dort gibt es dann die Methode getPixelColor:
Gut, ich denke mir, wenn dies funktioniert, geht auch das Füllen ... nur die Farbe wird nicht korrekt ausgelesen. Wenn ich mit der Maus z. B. über die original weiße Fläche fahre, erhalte ich sogar unterschiedliche Werte von 0 bis 255???
Kann mir da jemand helfen?
Im Anhang habe ich mal alles beigegeben. Ich weiß, dass da nicht alles toll und effizient ist ... seufz, aber bis hierher hat es funktioniert. Ach ja, geschrieben ist das ganze im JavaEditor.
Irgendwo in diesem Forum hatte ich auch mal ein tolles Tutorial gesehen, in dem beschrieben wurde, wie man "gut" zeichnet - habs hier nicht umsetzen können (auch aus Zeitgründen).
Mein Hauptproblem besteht wohl darin, die Pixelfarbe auf meiner Zeichenfläche (DrawPanel) auszulesen. Hab hier und da etwas gefunden ... zuletzt habe ich es so probiert:
Java:
public void mouseMoved(MouseEvent e) {
int ex = e.getX();
int ey = e.getY();
if (e.getSource() == zeichenBlatt)
{
int color = zeichenBlatt.getPixelColor(ex,ey).getRed();
System.out.println("Color ist " + color);
}
}
zeichenBlatt ist ein JPanel (bei mir erweitert um ein setPixel). Dort gibt es dann die Methode getPixelColor:
Java:
public class MyDrawPanel extends JPanel {
private Robot robot;
public MyDrawPanel () {
super();
try {
robot = new Robot();
} catch (AWTException e) {
e.printStackTrace();
}
}
...
// Liest Farbe eines Pixels aus
public Color getPixelColor(int x, int y)
{
if(robot != null){
return robot.getPixelColor(x,y);
}
return null;
}
Gut, ich denke mir, wenn dies funktioniert, geht auch das Füllen ... nur die Farbe wird nicht korrekt ausgelesen. Wenn ich mit der Maus z. B. über die original weiße Fläche fahre, erhalte ich sogar unterschiedliche Werte von 0 bis 255???
Kann mir da jemand helfen?
Im Anhang habe ich mal alles beigegeben. Ich weiß, dass da nicht alles toll und effizient ist ... seufz, aber bis hierher hat es funktioniert. Ach ja, geschrieben ist das ganze im JavaEditor.
Irgendwo in diesem Forum hatte ich auch mal ein tolles Tutorial gesehen, in dem beschrieben wurde, wie man "gut" zeichnet - habs hier nicht umsetzen können (auch aus Zeitgründen).