2016-06-04 6 views
0

Ich mache einen Startup-Manager für meine Musik-Visualizer in Javafx. Der Visualizer wird in OpenGL geschrieben und der Manager gibt Informationen in den Visualizer ein. Im Manager habe ich eine Art Vorschau für den Visualizer in Form einer Bühne, die nur eine Leinwand enthält. Auf der Leinwand möchte ich einige Linien mit der Maus zeichnen und dann die Koordinaten an OpenGL übergeben. Mein Problem ist, dass, wenn ich auf die mouseEvent.getX() Koordinaten zugreife, die Dekoration enthalten ist, was bedeutet, dass die Koordinaten nicht genau sind, oder verschoben durch die Dekoration. Hier sind einige Bilder zu zeigen:Ignorieren Bühnenrand für Mausklicks javafx

Der erste Screenshot zeigt den Manager. Beachten Sie, dass die Linie von der Spitze geht links den ganzen Weg hinunter nach rechts unten

Der zweite Screenshot der Visualizer zeigt. Hier geht die weiße Linie nicht ganz nach unten.

+1

Können Sie einen Code bereitstellen - insbesondere, wo Sie die Linie generieren? – Peter

Antwort

0

Ich habe das Problem behoben und diese Antwort nur für zukünftige Referenz verlassen.

Wenn Sie versuchen, eine Leinwand relativ zu skalieren, müssen Sie vorsichtig sein, welche Maße Sie verwenden.

Beim Erstellen eines Fensters ist das Koordinatensystem Stage relativ zum oberen linken Teil des Fensters einschließlich der Dekoration. Wenn Sie eine Node mit einer festen Größe, wie eine Canvas hinzufügen, wird die Größe der Stage größer.

Wenn Sie also etwas in Bezug auf die Größe Canvas skalieren, müssen Sie die Breite und Höhe des Canvas verwenden.