tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
2
ZUGRIFFE
156
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    KCL KCL ist offline Grünschnabel
    Registriert seit
    Jul 2011
    Beiträge
    3
    Hallo zusammen!

    Ich bräuchte eure Hilfe.

    Ich bin gerade dabei, ein Programm zu schreiben, in dem eine Datei eingelesen wird, die im Grunde genommen unr daten über Linienelemente enthält (es handelt sich dabei um ein Straßennetz). Danach sollen die Linien vom Benutzer angeklick werden können.

    Da die Koordinaten der unterschiedlichen Netze sehr unterschiedlich sind, skaliere und verschiebe ich sie vor der Darstellung. Zusätzlich gebe ich dem User die Möglichkeit mit der Maus zusätzlich Verschiebungen aufzubringen.

    Das Problem ist jetzt, dass ich beim Anklicken die Koordinaten im transformierten Koordinatensystem bekomme, die natürlich nicht mit denen der hinterlegten Line2D-Elemente übereinstimmen, mit denen ich sie vergleichen will.

    Ich habe schon versucht, mir die jeweils aktuelle Transformation zu speichern und diese invers auf den geklickten Punkt anzuwenden, aber irgendwie funktioniert das auch nicht, denn die Koordinaten, die ich dadurch erhalte haben noch weniger mit den richtigen Werten zu tun.

    Habt ihr eine Idee, was ich noch ausprobieren könnte?

    Danke!
     

  2. #2
    KCL KCL ist offline Grünschnabel
    Registriert seit
    Jul 2011
    Beiträge
    3
    Okay, hat sich halbwegs erledigt. Wenn ich die Verschiebung durch die Maus ausschalte funktioniert es. Der Fehler muss also irgendwo in dieser Funktion liegen. Ich habe auch schon eine Idee, wo...
     

  3. #3
    KCL KCL ist offline Grünschnabel
    Registriert seit
    Jul 2011
    Beiträge
    3
    Doch nicht erledigt. Ich war am Freitag so froh, dass ich die Linien anklicken kann, dass ich nicht weiter darauf geachtet habe, was danach passiert.

    Anscheinend wird die Grafik beim ersten Aufruf von paintComponent() aus irgendeinem Grund nur skaliert, nicht aber transliert gezeichnet. Das Anklicken funktioniert.

    Sobald nun aber repaint() aufgerufen wird springt die Grafik in das translierte KOSY und die Koordinaten lassen sich nicht mehr rückrechnen.

    Woran könnte das liegen?

    Hier die relevanten Abschnitte aus meinem Code:
    Code java:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    
        public void paintComponent(Graphics g){
            super.paintComponents(g);
            
            Graphics2D g2d =(Graphics2D) g;
                    
            g2d.scale(pxl/spread, -pxl/spread);
            
            if(minX < 0){
                g2d.translate(minX, (-maxY - minY));
            }
            else{
                g2d.translate(0, (-maxY - minY));
            }
     
            curTrans = g2d.getTransform();
    ...
    }
     
        public void mousePressed(MouseEvent e){
                if(e.getButton() == MouseEvent.BUTTON1){
                Point2D click = e.getPoint();
                Point point = new Point();
                try {
                    curTrans.inverseTransform(click, point);
                } catch (NoninvertibleTransformException e1) {
                    e1.printStackTrace();
                }
                double eps = 1;
                
                for(int i = 0; i < lines.size(); i++){
                    if(Math.abs(lines.elementAt(i).ptSegDist(point))<eps){
                                           /*
                                          *Aufruf eines Dialog zum weiteren Bearbeiten des Linienelements
                                          */
                        break;
                    }
                }
            }
        }

    minX, minY, maxY und spread werden beim Kostruktoraufruf einmal berechnet und bleiben dann konstant.
    pxl ist ebenfall einer Konstante, lines ein Vector von Line-Elementen.
     

Ähnliche Themen

  1. Koordinatensystem
    Von lucka im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 7
    Letzter Beitrag: 24.06.09, 15:46
  2. Koordinatensystem
    Von girl2005 im Forum Java
    Antworten: 40
    Letzter Beitrag: 14.08.08, 23:24
  3. Elemente aus Elementen aus Elementen zählen ...
    Von trivilian im Forum Relationale Datenbanksysteme
    Antworten: 2
    Letzter Beitrag: 27.12.06, 20:27
  4. Koordinatensystem
    Von KurtMurt im Forum Visual Basic 6.0
    Antworten: 6
    Letzter Beitrag: 02.05.06, 14:47
  5. Koordinatensystem
    Von jessy_musik im Forum Visual Basic 6.0
    Antworten: 8
    Letzter Beitrag: 16.11.04, 11:36

Stichworte