List of usage examples for javafx.scene.shape Line Line
public Line(double startX, double startY, double endX, double endY)
From source file:editeurpanovisu.EditeurPanovisu.java
private void ajouteAffichageLignes() { double largeur = imagePanoramique.getFitWidth(); double hauteur = largeur / 2.0d; Line ligne;//w w w .jav a 2 s . c o m int x, y; int nl = 0; for (int i = -180; i < 180; i += 10) { x = (int) (largeur / 2.0f + largeur / 360.0f * (float) i + imagePanoramique.getLayoutX()); ligne = new Line(x, 0, x, hauteur); ligne.setId("ligne" + nl); nl++; ligne.setStroke(Color.ORANGE); if (i == 0) { ligne.setStroke(Color.WHITE); ligne.setStrokeWidth(0.5); } else { if ((i % 20) == 0) { ligne.setStroke(Color.WHITE); ligne.setStrokeWidth(0.25); } else { ligne.setStroke(Color.GRAY); ligne.setStrokeWidth(0.25); } } pano.getChildren().add(ligne); } for (int i = -90; i < 90; i += 10) { y = (int) (hauteur / 2.0f + hauteur / 180.0f * (float) i); ligne = new Line(imagePanoramique.getLayoutX(), y, largeur + imagePanoramique.getLayoutX(), y); ligne.setId("ligne" + nl); nl++; if (i == 0) { ligne.setStroke(Color.WHITE); ligne.setStrokeWidth(0.5); } else { if ((i % 20) == 0) { ligne.setStroke(Color.WHITE); ligne.setStrokeWidth(0.25); } else { ligne.setStroke(Color.GRAY); ligne.setStrokeWidth(0.25); } } pano.getChildren().add(ligne); } }
From source file:editeurpanovisu.EditeurPanovisu.java
/** * * @return//from w w w. j a va 2 s .c o m */ private static ScrollPane spAfficheLegende() { double positionX; double positionY; AnchorPane apLegende = new AnchorPane(); ScrollPane spLegende = new ScrollPane(apLegende); spLegende.getStyleClass().add("legendePane"); apLegende.setMinWidth(1000); apLegende.setMinHeight(150); apLegende.setPrefWidth(1000); apLegende.setPrefHeight(150); apLegende.setMaxWidth(1000); apLegende.setMaxHeight(150); positionY = (spVuePanoramique.getPrefHeight() - apLegende.getPrefHeight() - 15); Circle circPoint = new Circle(30, 20, 5); circPoint.setFill(Color.YELLOW); circPoint.setStroke(Color.RED); circPoint.setCursor(Cursor.DEFAULT); Circle circPoint2 = new Circle(30, 40, 5); circPoint2.setFill(Color.BLUE); circPoint2.setStroke(Color.YELLOW); circPoint2.setCursor(Cursor.DEFAULT); Circle circPoint3 = new Circle(30, 60, 5); circPoint3.setFill(Color.GREEN); circPoint3.setStroke(Color.YELLOW); circPoint3.setCursor(Cursor.DEFAULT); Polygon polygonCroix = new Polygon(); polygonCroix.getPoints().addAll(new Double[] { 15.0, 2.0, 2.0, 2.0, 2.0, 15.0, -2.0, 15.0, -2.0, 2.0, -15.0, 2.0, -15.0, -2.0, -2.0, -2.0, -2.0, -15.0, 2.0, -15.0, 2.0, -2.0, 15.0, -2.0 }); polygonCroix.setStrokeLineJoin(StrokeLineJoin.MITER); polygonCroix.setFill(Color.BLUEVIOLET); polygonCroix.setStroke(Color.YELLOW); polygonCroix.setId("PoV"); polygonCroix.setLayoutX(500); polygonCroix.setLayoutY(20); Label lblHS = new Label(rbLocalisation.getString("main.legendeHS")); Label lblHSImage = new Label(rbLocalisation.getString("main.legendeHSImage")); Label lblHSHTML = new Label(rbLocalisation.getString("main.legendeHSHTML")); Label lblPoV = new Label(rbLocalisation.getString("main.legendePoV")); Label lblNord = new Label(rbLocalisation.getString("main.legendeNord")); Line lineNord = new Line(500, 45, 500, 65); lineNord.setStroke(Color.RED); lineNord.setStrokeWidth(3); lblHS.setLayoutX(50); lblHS.setLayoutY(15); lblHSImage.setLayoutX(50); lblHSImage.setLayoutY(35); lblHSHTML.setLayoutX(50); lblHSHTML.setLayoutY(55); lblPoV.setLayoutX(520); lblPoV.setLayoutY(15); lblNord.setLayoutX(520); lblNord.setLayoutY(55); apLegende.getChildren().addAll(lblHS, circPoint, lblHSImage, circPoint2, lblHSHTML, circPoint3, lblPoV, polygonCroix, lblNord, lineNord); apLegende.setId("legende"); apLegende.setVisible(true); if (largeurMax - 50 < 1004) { spLegende.setPrefWidth(largeurMax - 50); spLegende.setMaxWidth(largeurMax - 50); positionX = 25; } else { spLegende.setPrefWidth(1004); spLegende.setMaxWidth(1004); positionX = (largeurMax - 1004) / 2.d; } spLegende.setLayoutX(positionX); spLegende.setLayoutY(positionY); spLegende.setVbarPolicy(ScrollPane.ScrollBarPolicy.NEVER); spLegende.setHbarPolicy(ScrollPane.ScrollBarPolicy.AS_NEEDED); return spLegende; }
From source file:editeurpanovisu.EditeurPanovisu.java
/** * * @param longitude/*from ww w . j ava2 s . co m*/ */ private static void afficheNord(double longitude) { double largeur = ivImagePanoramique.getFitWidth(); double X = (longitude + 180.0d) * largeur / 360.0d + ivImagePanoramique.getLayoutX(); Node nodeAncienNord = (Node) panePanoramique.lookup("#Nord"); if (nodeAncienNord != null) { panePanoramique.getChildren().remove(nodeAncienNord); } Line lineNord = new Line(0, 0, 0, ivImagePanoramique.getFitHeight()); lineNord.setCursor(Cursor.DEFAULT); lineNord.setLayoutX(X); lineNord.setStroke(Color.RED); lineNord.setStrokeWidth(4); lineNord.setId("Nord"); lineNord.setOnDragDetected((mouseEvent1) -> { lineNord.setStroke(Color.BLUEVIOLET); bDragDrop = true; mouseEvent1.consume(); }); lineNord.setOnMouseDragged((me1) -> { double XX = me1.getSceneX() - ivImagePanoramique.getLayoutX(); if (XX < 0) { XX = 0; } if (XX > ivImagePanoramique.getFitWidth()) { XX = ivImagePanoramique.getFitWidth(); } lineNord.setLayoutX(XX + ivImagePanoramique.getLayoutX()); me1.consume(); double YY = me1.getY(); afficheLoupe(XX, YY); }); lineNord.setOnMouseReleased((me1) -> { double X1 = me1.getSceneX(); double mouseX1 = X1 - ivImagePanoramique.getLayoutX(); if (mouseX1 < 0) { mouseX1 = 0; } if (mouseX1 > ivImagePanoramique.getFitWidth()) { mouseX1 = ivImagePanoramique.getFitWidth(); } double regardX = 360.0f * mouseX1 / largeur - 180; navigateurPanoramique.setPositNord(regardX - 180); navigateurPanoramique.affiche(); getPanoramiquesProjet()[getiPanoActuel()].setZeroNord(regardX); lineNord.setStroke(Color.RED); me1.consume(); }); panePanoramique.getChildren().add(lineNord); }
From source file:editeurpanovisu.EditeurPanovisu.java
/** * *//* ww w . java2 s . co m*/ private static void ajouteAffichageLignes() { double largeur = ivImagePanoramique.getFitWidth(); double hauteur = largeur / 2.0d; Line lineCoordonnees; int iX, iY; int iNl = 0; for (int i = -180; i < 180; i += 10) { iX = (int) (largeur / 2.0f + largeur / 360.0f * (float) i + ivImagePanoramique.getLayoutX()); lineCoordonnees = new Line(iX, 0, iX, hauteur); lineCoordonnees.setId("ligne" + iNl); iNl++; lineCoordonnees.setStroke(Color.ORANGE); if (i == 0) { lineCoordonnees.setStroke(Color.WHITE); lineCoordonnees.setStrokeWidth(0.5); } else { if ((i % 20) == 0) { lineCoordonnees.setStroke(Color.WHITE); lineCoordonnees.setStrokeWidth(0.25); } else { lineCoordonnees.setStroke(Color.GRAY); lineCoordonnees.setStrokeWidth(0.25); } } panePanoramique.getChildren().add(lineCoordonnees); } for (int i = -90; i < 90; i += 10) { iY = (int) (hauteur / 2.0f + hauteur / 180.0f * (float) i); lineCoordonnees = new Line(ivImagePanoramique.getLayoutX(), iY, largeur + ivImagePanoramique.getLayoutX(), iY); lineCoordonnees.setId("ligne" + iNl); iNl++; if (i == 0) { lineCoordonnees.setStroke(Color.WHITE); lineCoordonnees.setStrokeWidth(0.5); } else { if ((i % 20) == 0) { lineCoordonnees.setStroke(Color.WHITE); lineCoordonnees.setStrokeWidth(0.25); } else { lineCoordonnees.setStroke(Color.GRAY); lineCoordonnees.setStrokeWidth(0.25); } } panePanoramique.getChildren().add(lineCoordonnees); } }
From source file:editeurpanovisu.EditeurPanovisu.java
/** * *///from ww w. ja v a 2s .co m private static void creeLoupe() { apLoupe.getChildren().clear(); if (strPositLoupe.equals("gauche")) { apLoupe.setLayoutX(35); } if (strPositLoupe.equals("droite")) { apLoupe.setLayoutX(ivImagePanoramique.getFitWidth() - getiTailleLoupe() + 5); } apLoupe.setLayoutY(35); Line lig1 = new Line(getiTailleLoupe() / 2 + 10, 10, getiTailleLoupe() / 2 + 10, getiTailleLoupe() + 10); lig1.setStroke(Color.GOLD); Line lig2 = new Line(10, getiTailleLoupe() / 2 + 10, getiTailleLoupe() + 10, getiTailleLoupe() / 2 + 10); lig2.setStroke(Color.GOLD); Circle circ1 = new Circle(getiTailleLoupe() / 2 + 10, getiTailleLoupe() / 2 + 10, getiTailleLoupe() / 2 + 6); circ1.setStroke(Color.GOLDENROD); circ1.setFill(Color.GOLDENROD); Circle circ2 = new Circle(getiTailleLoupe() / 2 + 10, getiTailleLoupe() / 2 + 10, getiTailleLoupe() / 2 + 5); circ2.setStroke(Color.GOLD); circ2.setFill(Color.GOLD); Circle circ3 = new Circle(getiTailleLoupe() / 2 + 10, getiTailleLoupe() / 2 + 10, getiTailleLoupe() / 2 + 2); circ3.setStroke(Color.GOLDENROD); circ3.setFill(Color.GOLDENROD); Circle circ4 = new Circle(getiTailleLoupe() / 2 + 10, getiTailleLoupe() / 2 + 10, getiTailleLoupe() / 2); circ4.setStroke(Color.BLACK); circ4.setFill(Color.BLACK); apLoupe.getChildren().addAll(circ1, circ2, circ3, circ4, ivLoupe, lig1, lig2); apLoupe.setOnMouseMoved((me) -> { if (strPositLoupe.equals("gauche")) { apLoupe.setLayoutX(ivImagePanoramique.getFitWidth() - getiTailleLoupe() + 5); strPositLoupe = "droite"; } if (strPositLoupe.equals("droite")) { apLoupe.setLayoutX(35); strPositLoupe = "gauche"; } }); apLoupe.setOnMouseEntered((me) -> { if (strPositLoupe.equals("gauche")) { apLoupe.setLayoutX(ivImagePanoramique.getFitWidth() - getiTailleLoupe() + 5); strPositLoupe = "droite"; } if (strPositLoupe.equals("droite")) { apLoupe.setLayoutX(35); strPositLoupe = "gauche"; } }); }
From source file:editeurpanovisu.EditeurPanovisu.java
/** * * @param iLargeur/* w w w .j a va 2s . com*/ * @param iHauteur * @param bMasqueZones */ private static void ajouterZone(int iLargeur, int iHauteur, boolean bMasqueZones) { if (iNombreZones == -1) { iNombreZones = 0; } final ZoneTelecommande zone = new ZoneTelecommande(); strTypeZone = "poly"; zone.setStrTypeZone(strTypeZone); iNombrePointsZone = 0; bRecommenceZone = false; apZoneBarrePersonnalisee.getChildren().clear(); Button btnAnnuler = new Button(rbLocalisation.getString("main.annuler"), new ImageView(new Image("file:" + getStrRepertAppli() + "/images/annule.png"))); Button btnValider = new Button(rbLocalisation.getString("main.valider"), new ImageView(new Image("file:" + getStrRepertAppli() + "/images/valide.png"))); btnValider.setLayoutX(180); btnValider.setLayoutY(170); btnAnnuler.setLayoutX(80); btnAnnuler.setLayoutY(170); ToggleGroup tgTypeZone = new ToggleGroup(); Label lblTypeZone = new Label(rbLocalisation.getString("main.typeZone")); lblTypeZone.setLayoutX(20); lblTypeZone.setLayoutY(10); RadioButton rbCercleZone = new RadioButton(rbLocalisation.getString("main.cercle")); rbCercleZone.setLayoutX(20); rbCercleZone.setLayoutY(40); rbCercleZone.setUserData("circle"); rbCercleZone.setToggleGroup(tgTypeZone); RadioButton rbRectZone = new RadioButton(rbLocalisation.getString("main.rectangle")); rbRectZone.setLayoutX(120); rbRectZone.setLayoutY(40); rbRectZone.setUserData("rect"); rbRectZone.setToggleGroup(tgTypeZone); RadioButton rbPolyZone = new RadioButton(rbLocalisation.getString("main.polygone")); rbPolyZone.setLayoutX(220); rbPolyZone.setLayoutY(40); rbPolyZone.setUserData("poly"); rbPolyZone.setToggleGroup(tgTypeZone); rbPolyZone.setSelected(true); ComboBox cbTouchesBarre = new ComboBox(); cbTouchesBarre.getItems().clear(); for (int i = 0; i < strTouchesBarre.length; i++) { cbTouchesBarre.getItems().add(i, strTouchesBarre[i]); } cbTouchesBarre.setLayoutX(50); cbTouchesBarre.setLayoutY(110); afficheBarrePersonnalisee(iLargeur, iHauteur, bMasqueZones); AnchorPane apCreeZone = new AnchorPane(); apCreeZone.setStyle("-fx-background-color : rgba(0,0,0,0.1)"); apCreeZone.setPrefWidth(imgBarrePersonnalisee.getWidth()); apCreeZone.setPrefHeight(imgBarrePersonnalisee.getHeight()); apCreeZone.setCursor(Cursor.CROSSHAIR); apImgBarrePersonnalisee.getChildren().add(apCreeZone); apZoneBarrePersonnalisee.getChildren().addAll(lblTypeZone, rbCercleZone, rbRectZone, rbPolyZone, cbTouchesBarre, btnAnnuler, btnValider); apCreeZone.setOnMouseClicked((t) -> { rbCercleZone.setDisable(true); rbRectZone.setDisable(true); rbPolyZone.setDisable(true); iNombrePointsZone++; switch (strTypeZone) { case "rect": if (iNombrePointsZone == 1) { apCreeZone.getChildren().clear(); x1Zone = t.getX(); y1Zone = t.getY(); Circle cercle = new Circle(t.getX(), t.getY(), 4); cercle.setFill(Color.rgb(255, 0, 0, 0.5)); cercle.setStroke(Color.YELLOW); apCreeZone.getChildren().add(cercle); } if (iNombrePointsZone == 2) { apCreeZone.getChildren().clear(); Rectangle rect = new Rectangle(x1Zone, y1Zone, t.getX() - x1Zone, t.getY() - y1Zone); rect.setFill(Color.rgb(255, 0, 0, 0.5)); rect.setStroke(Color.YELLOW); apCreeZone.getChildren().add(rect); String chaine = Math.round(x1Zone * 10) / 10 + "," + Math.round(y1Zone * 10) / 10 + "," + Math.round(t.getX() * 10) / 10 + "," + Math.round(t.getY() * 10) / 10; zone.setStrCoordonneesZone(chaine); iNombrePointsZone = 0; } break; case "circle": if (iNombrePointsZone == 1) { apCreeZone.getChildren().clear(); x1Zone = t.getX(); y1Zone = t.getY(); Circle cercle = new Circle(t.getX(), t.getY(), 4); cercle.setFill(Color.rgb(255, 0, 0, 0.5)); cercle.setStroke(Color.YELLOW); apCreeZone.getChildren().add(cercle); } if (iNombrePointsZone == 2) { apCreeZone.getChildren().clear(); double rayon = Math.sqrt(Math.pow(x1Zone - t.getX(), 2.d) + Math.pow(y1Zone - t.getY(), 2.d)); Circle cercle = new Circle(x1Zone, y1Zone, rayon); cercle.setFill(Color.rgb(255, 0, 0, 0.5)); cercle.setStroke(Color.YELLOW); apCreeZone.getChildren().add(cercle); String chaine = Math.round(x1Zone * 10) / 10 + "," + Math.round(y1Zone * 10) / 10 + "," + Math.round(rayon * 10) / 10; zone.setStrCoordonneesZone(chaine); iNombrePointsZone = 0; } break; case "poly": if (bRecommenceZone) { bRecommenceZone = false; iNombrePointsZone = 1; } if (iNombrePointsZone == 1) { apCreeZone.getChildren().clear(); x1Zone = t.getX(); y1Zone = t.getY(); Circle cercle = new Circle(t.getX(), t.getY(), 4); cercle.setFill(Color.rgb(255, 0, 0, 0.5)); cercle.setStroke(Color.YELLOW); apCreeZone.getChildren().add(cercle); pointsPolyZone[(iNombrePointsZone - 1) * 2] = t.getX(); pointsPolyZone[(iNombrePointsZone - 1) * 2 + 1] = t.getY(); } if (iNombrePointsZone == 2) { apCreeZone.getChildren().clear(); Line ligne = new Line(x1Zone, y1Zone, t.getX(), t.getY()); ligne.setStroke(Color.YELLOW); apCreeZone.getChildren().add(ligne); pointsPolyZone[(iNombrePointsZone - 1) * 2] = t.getX(); pointsPolyZone[(iNombrePointsZone - 1) * 2 + 1] = t.getY(); } if (iNombrePointsZone > 2) { pointsPolyZone[(iNombrePointsZone - 1) * 2] = t.getX(); pointsPolyZone[(iNombrePointsZone - 1) * 2 + 1] = t.getY(); apCreeZone.getChildren().clear(); Polygon poly = new Polygon(); for (int i = 0; i < iNombrePointsZone; i++) { poly.getPoints().addAll(pointsPolyZone[i * 2], pointsPolyZone[i * 2 + 1]); } poly.setFill(Color.rgb(255, 0, 0, 0.5)); poly.setStroke(Color.YELLOW); apCreeZone.getChildren().add(poly); } if (t.getClickCount() == 2) { String chaine = ""; for (int i = 0; i < iNombrePointsZone; i++) { if (i != 0) { chaine += ","; } chaine += Math.round(pointsPolyZone[i * 2] * 10) / 10 + "," + Math.round(pointsPolyZone[i * 2 + 1] * 10) / 10; } zone.setStrCoordonneesZone(chaine); bRecommenceZone = true; } break; } }); apCreeZone.setOnMouseMoved((t) -> { switch (strTypeZone) { case "rect": if (iNombrePointsZone == 1) { apCreeZone.getChildren().clear(); Rectangle rect = new Rectangle(x1Zone, y1Zone, t.getX() - x1Zone, t.getY() - y1Zone); rect.setFill(Color.rgb(255, 0, 0, 0.5)); rect.setStroke(Color.YELLOW); apCreeZone.getChildren().add(rect); } break; case "circle": if (iNombrePointsZone == 1) { apCreeZone.getChildren().clear(); double rayon = Math.sqrt(Math.pow(x1Zone - t.getX(), 2.d) + Math.pow(y1Zone - t.getY(), 2.d)); Circle cercle = new Circle(x1Zone, y1Zone, rayon); cercle.setFill(Color.rgb(255, 0, 0, 0.5)); cercle.setStroke(Color.YELLOW); apCreeZone.getChildren().add(cercle); } break; case "poly": if (!bRecommenceZone) { if (iNombrePointsZone == 1) { apCreeZone.getChildren().clear(); Line ligne = new Line(x1Zone, y1Zone, t.getX(), t.getY()); ligne.setStroke(Color.YELLOW); apCreeZone.getChildren().add(ligne); } if (iNombrePointsZone > 1) { apCreeZone.getChildren().clear(); Polygon poly = new Polygon(); for (int i = 0; i < iNombrePointsZone; i++) { poly.getPoints().addAll(pointsPolyZone[i * 2], pointsPolyZone[i * 2 + 1]); } poly.getPoints().addAll(t.getX(), t.getY()); poly.setFill(Color.rgb(255, 0, 0, 0.5)); poly.setStroke(Color.YELLOW); apCreeZone.getChildren().add(poly); } } break; } }); btnValider.setOnMouseClicked((t) -> { if (strTypeZone.equals("poly")) { String strChaine = ""; for (int i = 0; i < iNombrePointsZone; i++) { if (i != 0) { strChaine += ","; } strChaine += Math.round(pointsPolyZone[i * 2] * 10) / 10 + "," + Math.round(pointsPolyZone[i * 2 + 1] * 10) / 10; } zone.setStrCoordonneesZone(strChaine); } zones[iNombreZones] = zone; iNombreZones++; afficheBarrePersonnalisee(iLargeur, iHauteur, bMasqueZones); btnAjouteZone.setDisable(false); }); btnAnnuler.setOnMouseClicked((t) -> { afficheBarrePersonnalisee(iLargeur, iHauteur, bMasqueZones); btnAjouteZone.setDisable(false); }); cbTouchesBarre.valueProperty().addListener((ov, strAncienneValeur, strNouvelleValeur) -> { if (strNouvelleValeur != null) { String strId = strCodeBarre[cbTouchesBarre.getSelectionModel().getSelectedIndex()]; zone.setStrIdZone(strId); } }); tgTypeZone.selectedToggleProperty() .addListener((ObservableValue<? extends Toggle> ov, Toggle old_toggle, Toggle new_toggle) -> { if (tgTypeZone.getSelectedToggle() != null) { strTypeZone = tgTypeZone.getSelectedToggle().getUserData().toString(); zone.setStrTypeZone(strTypeZone); } }); }
From source file:snpviewer.SnpViewer.java
public List<Line> drawLinesToPane(Pane pane, final ArrayList<HashMap<String, Double>> linemap) { List<Line> lines = new ArrayList(); for (HashMap<String, Double> l : linemap) { double width = pane.getWidth(); double coord = l.get("x"); Line line = new Line(l.get("x"), 0, l.get("x"), pane.getMinHeight()); line.setStroke(colorComp.get(l.get("color").intValue())); /*line.startXProperty().bind((pane.widthProperty().divide(width)).multiply(coord) ); line.endXProperty().bind((pane.widthProperty().divide(width)).multiply(coord) ); line.endYProperty().bind(pane.heightProperty().subtract(1));*/ lines.add(line);/*from w w w.j a va 2s . c o m*/ //pane.getChildren().add(l); } return lines; }