daily pastebin goal
20%
SHARE
TWEET

Untitled

a guest Nov 20th, 2017 48 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.         });
  2.  
  3.         drawButton.setOnAction(ActionEvent -> {
  4.             if (gc == null) {
  5.                 gc = editArea.getGraphicsContext2D();
  6.             }
  7.  
  8.         });
  9.  
  10.         editArea.setOnMouseClicked(ActionEvent -> {
  11.             if (editRadio.isSelected() && scaleRadio.isSelected()) {
  12.                 clickedPoints.set(clickedPoints.size() - 1,
  13.                         scalePolygon(ActionEvent, clickedPoints.get(clickedPoints.size() - 1), scaleRatio.getText()));
  14.             } else {
  15.                 collectPolygon(ActionEvent, editArea);
  16.             }
  17.         });
  18.         editArea.setOnMousePressed(ActionEVent -> {
  19.             if (editRadio.isSelected())
  20.                 firstPoint = new Point(ActionEVent.getX(), ActionEVent.getY());
  21.         });
  22.         editArea.setOnMouseDragged(MouseDragEvent -> {
  23.             if (editRadio.isSelected() && !scaleRadio.isSelected()) {
  24.                 clickedPoints.set(clickedPoints.size() - 1,
  25.                         movePolygon(clickedPoints.get(clickedPoints.size() - 1), MouseDragEvent));
  26.             }
  27.         });
  28.  
  29.         drawButton.setOnAction(ActionEvent -> {
  30.             drawPolygon(Color.BLACK, clickedPoints.get(clickedPoints.size() - 1), 1);
  31.         });
  32.     }
  33.  
  34.     private List<Point> scalePolygon(MouseEvent actionEVent, List<Point> list, String text) {
  35.         drawPolygon(Color.WHITE, list, 5);
  36.         double k = Double.parseDouble(text);
  37.         list.stream().forEach(point -> {
  38.             point.setX(point.getX() * k + (1 - k) * actionEVent.getX());
  39.             point.setY(point.getY() * k + (1 - k) * actionEVent.getY());
  40.         });
  41.         drawPolygon(Color.BLACK, list, 1);
  42.         return list;
  43.     }
  44.  
  45.     private List<Point> movePolygon(List<Point> list, MouseEvent event) {
  46.         double deltaX = (firstPoint.getX() - event.getX()) / 50;
  47.         double deltaY = (firstPoint.getY() - event.getY()) / 50;
  48.         drawPolygon(Color.WHITE, list, 5);
  49.         list.stream().forEach(point -> {
  50.             point.setX(point.getX() - deltaX);
  51.             point.setY(point.getY() - deltaY);
  52.         });
  53.         drawPolygon(Color.BLACK, list, 1);
  54.         return list;
  55.  
  56.     }
  57.  
  58.     public void collectPolygon(MouseEvent event, Canvas canvas) {
  59.         if (canvas == null) {
  60.             canvas = new Canvas();
  61.             canvas.setWidth(600);
  62.             canvas.setHeight(600);
  63.         }
  64.         Point point = new Point(event.getX(), event.getY());
  65.         List<Point> list = new LinkedList<Point>();
  66.  
  67.         if (!painted) {
  68.             list = clickedPoints.get(clickedPoints.size() - 1);
  69.         }
  70.         list.add(point);
  71.  
  72.         if (clickedPoints.size() == 0) {
  73.             clickedPoints.add(list);
  74.         } else {
  75.             clickedPoints.set(clickedPoints.size() - 1, list);
  76.         }
  77.  
  78.         if (gc == null)
  79.             gc = canvas.getGraphicsContext2D();
  80.  
  81.         painted = false;
  82.         points++;
  83.     }
  84.  
  85.     private void drawPolygon(Color color, List<Point> list, int width) {
  86.  
  87.         double[] xArg = list.stream().mapToDouble(x -> x.getX()).toArray();
  88.         double[] yArg = list.stream().mapToDouble(y -> y.getY()).toArray();
  89.         gc.setLineWidth(gc.getLineWidth());
  90.         gc.setStroke(color);
  91.         gc.setLineWidth(width);
  92.         gc.strokePolygon(xArg, yArg, xArg.length);
  93.         painted = true;
  94.         points = 0;
  95.     }
RAW Paste Data
Top