Angenommen, ich habe eine Linienform auf dem Fenster, und ich möchte Kreisformen darauf. Wie kann ich das Ziehen des Kreises beschränken, so dass die Kreise nur auf der Linie nach links und rechts gezogen werden können, aber nirgendwo anders .Wie man das Ziehen eines Kreises auf einer Linie einschränkt. JavaFX
0
A
Antwort
0
Diese Implementierung folgt der Zeile und geht nicht über die Zeilenenden hinaus.
Der folgende Schlüssel ist
y = mx + b
.m = slope of line
undb = y-intercept
.Hier ist eine grobe Umsetzung:
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.AnchorPane;
import javafx.scene.paint.Color;
import javafx.scene.shape.Circle;
import javafx.scene.shape.Line;
import javafx.stage.Stage;
/**
*
* @author blj0011
*/
public class JavaFXApplication42 extends Application {
@Override
public void start(Stage primaryStage) {
AnchorPane root = new AnchorPane();
Line line = new Line(20, 120, 70, 170);
line.setStrokeWidth(3);
//When the line is clicked by the mouse add a circle
line.setOnMouseClicked((mouseClickedEvent)->{
Circle c1 = new Circle(mouseClickedEvent.getSceneX(), mouseClickedEvent.getSceneY(), 25, Color.BLUE);
//When the circle is dragged follow the line
c1.setOnMouseDragged(mouseDraggedEvent -> {
double slope = lineSlope(line.getStartX(), line.getEndX(), line.getStartY(), line.getEndY());
double yIntercept = yIntercept(slope, line.getStartX(), line.getStartY());
c1.setCenterY(setCenterY(slope, mouseDraggedEvent.getSceneX(), yIntercept));
c1.setCenterX(mouseDraggedEvent.getSceneX());
//Bound checks to make sure circle does not go pass the line ends
if(c1.getCenterX() > line.getEndX())
{
c1.setCenterX(line.getEndX());
}
else if(c1.getCenterX() < line.getStartX())
{
c1.setCenterX(line.getStartX());
}
if(c1.getCenterY() > line.getEndY())
{
c1.setCenterY(line.getEndY());
}
else if(c1.getCenterY() < line.getStartY())
{
c1.setCenterY(line.getStartY());
}
});
root.getChildren().add(c1);
});
root.getChildren().add(line);
Scene scene = new Scene(root, 300, 250);
primaryStage.setTitle("Hello World!");
primaryStage.setScene(scene);
primaryStage.show();
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
launch(args);
}
double lineSlope(double x1, double x2, double y1, double y2)
{
if(x2 - x1 == 0)
{
return 0;
}
return (y2 - y1)/(x2 - x1);
}
double yIntercept(double slope, double x1, double y1)
{
return y1 - (slope * x1);
}
double setCenterY(double slope, double x, double yIntercept)
{
return slope * x + yIntercept;
}
}
Verwandte Themen
- 1. Ziehen eines Kreises auf einer Leinwand mit mousedown
- 2. Wie eine Linie in JavaFX ziehen
- 3. Das Zeichnen eines Kreises auf einer Karte wird nicht angezeigt
- 4. Wie man das d3.js Ziehverhalten auf einer Mercator Map einschränkt
- 5. Wie man Bewegung auf xcode iphone einschränkt?
- 6. Wie programmiere ich das Zentrum eines Kreises und eines Halbmondes?
- 7. Wie man glatt das Zeichnen einer Linie
- 8. QT Zeichnen eines Kreises
- 9. JavaFX Zeichnung "statische" Linie auf Leinwand
- 10. Wie man den Text innerhalb eines Etiketteninhalts einschränkt
- 11. Matlab - isolierende x/y-Werte eines Kreises innerhalb eines Kreises
- 12. SVG - Verschieben eines Kreises entlang eines Weges von einer animierten geraden Linie
- 13. Wie die gestrichelte Linie JavaFX
- 14. Wie kann man ein undekoriertes Fenster in JavaFX verschieben/ziehen?
- 15. entferne Linie innerhalb des Kreises div
- 16. Zeichnen eines Kreises auf einer BufferedImage in Java
- 17. JavaFX wrap so String passt auf Linie
- 18. JavaScript - Zeichnen eines Kreises
- 19. C++ Erstellen eines Umrisses eines Kreises mit mehreren Linien
- 20. Wie verschiebt man ein Bild entlang eines Kreises in Android?
- 21. Wie man die Checkbox-Auswahl einschränkt
- 22. Kann jemand das X und Y eines gezeichneten Kreises erhalten?
- 23. Wie man den Zugriff auf statische Inhalte einschränkt
- 24. Optimaler Punkt auf dem Umfang eines Kreises
- 25. Wie man einen Link innerhalb eines SVG-Kreises hinzufügt
- 26. Zeichne einen Teil eines Kreises
- 27. Wie man das Pfeilsymbol an die Linie
- 28. Linie zwischen den Menüpunkten ziehen
- 29. Wie auf UIView ziehen
- 30. Ziehen eines Objekts in einer Zeile
Wie es gezogen werden wird, ist es ein Ziehbare Knoten oder ist es ein Satz auf Action? – Matt
Ich plane SetOnAction –
Würde es Ihnen etwas ausmachen, etwas von Ihrem Code zu veröffentlichen, damit wir sehen können, was Sie tun, um es möglicherweise zu zwicken – Matt